grpc 1.84.1 → 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.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (1005) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +40 -27
  3. data/etc/roots.pem +7940 -6467
  4. data/include/grpc/event_engine/memory_allocator.h +1 -0
  5. data/include/grpc/grpc.h +3 -0
  6. data/include/grpc/grpc_security_constants.h +2 -0
  7. data/include/grpc/impl/channel_arg_names.h +4 -0
  8. data/src/core/call/call_filters.h +10 -10
  9. data/src/core/{lib/security/authorization → call}/evaluate_args.cc +22 -1
  10. data/src/core/{lib/security/authorization → call}/evaluate_args.h +19 -5
  11. data/src/core/call/filter_fusion.h +15 -15
  12. data/src/core/call/interception_chain.h +3 -3
  13. data/src/core/call/metadata_batch.cc +1 -0
  14. data/src/core/call/metadata_batch.h +45 -33
  15. data/src/core/call/parsed_metadata.h +3 -3
  16. data/src/core/call/request_buffer.cc +6 -6
  17. data/src/core/call/request_buffer.h +1 -1
  18. data/src/core/channelz/channel_trace.cc +5 -5
  19. data/src/core/channelz/channel_trace.h +1 -1
  20. data/src/core/channelz/channelz.cc +9 -9
  21. data/src/core/channelz/channelz.h +12 -12
  22. data/src/core/channelz/channelz_registry.cc +10 -10
  23. data/src/core/channelz/ztrace_collector.h +5 -5
  24. data/src/core/client_channel/client_channel.cc +4 -4
  25. data/src/core/client_channel/client_channel_filter.cc +14 -14
  26. data/src/core/client_channel/global_subchannel_pool.cc +4 -4
  27. data/src/core/client_channel/subchannel.cc +24 -23
  28. data/src/core/client_channel/subchannel_stream_client.cc +5 -5
  29. data/src/core/credentials/call/external/aws_external_account_credentials.cc +7 -7
  30. data/src/core/credentials/call/external/aws_request_signer.cc +16 -0
  31. data/src/core/credentials/call/external/external_account_credentials.cc +4 -4
  32. data/src/core/credentials/call/regional_access_boundary_fetcher.cc +9 -9
  33. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +4 -4
  34. data/src/core/credentials/transport/google_default/google_default_credentials.cc +3 -3
  35. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +1 -1
  36. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +9 -9
  37. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +1 -1
  38. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +6 -6
  39. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +3 -3
  40. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +4 -4
  41. data/src/core/credentials/transport/tls/ssl_utils.cc +10 -0
  42. data/src/core/credentials/transport/tls/tls_security_connector.cc +10 -10
  43. data/src/core/credentials/transport/tls/tls_security_connector.h +6 -6
  44. data/src/core/credentials/transport/tls/tls_utils.h +9 -0
  45. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +1 -1
  46. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
  47. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
  48. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +1 -1
  49. data/src/core/ext/filters/http/message_compress/compression_filter.cc +15 -0
  50. data/src/core/ext/filters/rbac/rbac_filter.h +1 -1
  51. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +5 -5
  52. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +30 -21
  53. data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -11
  54. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +14 -11
  55. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
  56. data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -4
  57. data/src/core/ext/transport/chttp2/transport/frame.h +9 -0
  58. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -9
  59. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -2
  60. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +16 -18
  61. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +2 -1
  62. data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +277 -189
  63. data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +40 -17
  64. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +12 -24
  65. data/src/core/ext/transport/chttp2/transport/http2_transport.h +3 -29
  66. data/src/core/ext/transport/chttp2/transport/internal.h +2 -2
  67. data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
  68. data/src/core/ext/transport/chttp2/transport/read_context.h +96 -3
  69. data/src/core/ext/transport/chttp2/transport/reclaimer.cc +32 -0
  70. data/src/core/ext/transport/chttp2/transport/reclaimer.h +64 -0
  71. data/src/core/ext/transport/chttp2/transport/security_frame.h +8 -8
  72. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +17 -9
  73. data/src/core/ext/transport/chttp2/transport/write_cycle.h +23 -3
  74. data/src/core/ext/transport/inproc/inproc_transport.cc +5 -5
  75. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb.h +137 -73
  76. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb_minitable.c +45 -25
  77. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb.h +6 -6
  78. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.c +4 -4
  79. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.h +5 -5
  80. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb.h +46 -26
  81. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.c +17 -14
  82. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.h +5 -5
  83. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb.h +5 -5
  84. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.c +3 -3
  85. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.h +5 -5
  86. data/src/core/ext/upb-gen/grpc/health/v1/health.upb.h +329 -0
  87. data/src/core/ext/upb-gen/grpc/health/v1/health.upb_minitable.c +128 -0
  88. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/health/v1/health.upb_minitable.h +8 -5
  89. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb.h +5 -5
  90. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.c +3 -3
  91. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.h +5 -5
  92. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb.h +185 -23
  93. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.c +20 -12
  94. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.h +5 -5
  95. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb.h +58 -42
  96. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.c +17 -12
  97. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.h +5 -5
  98. data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +567 -549
  99. data/src/core/ext/upbdefs-gen/grpc/lookup/v1/rls_config.upbdefs.c +182 -0
  100. data/src/core/ext/upbdefs-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upbdefs.h +14 -14
  101. data/src/core/filter/ext_proc/ext_proc_filter.cc +1603 -46
  102. data/src/core/filter/ext_proc/ext_proc_filter.h +55 -22
  103. data/src/core/filter/ext_proc/ext_proc_messages.cc +106 -51
  104. data/src/core/filter/ext_proc/ext_proc_messages.h +36 -9
  105. data/src/core/handshaker/handshaker.cc +4 -4
  106. data/src/core/handshaker/http_connect/http_connect_client_handshaker.cc +3 -3
  107. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +10 -10
  108. data/src/core/handshaker/security/secure_endpoint.cc +13 -13
  109. data/src/core/handshaker/security/security_handshaker.cc +6 -6
  110. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +4 -4
  111. data/src/core/lib/channel/channel_args.cc +20 -0
  112. data/src/core/lib/channel/channel_args.h +17 -17
  113. data/src/core/lib/channel/promise_based_filter.cc +2 -2
  114. data/src/core/lib/channel/promise_based_filter.h +66 -27
  115. data/src/core/lib/debug/trace_flags.cc +2 -0
  116. data/src/core/lib/debug/trace_flags.h +1 -0
  117. data/src/core/lib/event_engine/ares_resolver.cc +14 -14
  118. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +7 -7
  119. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +4 -4
  120. data/src/core/lib/event_engine/default_event_engine.cc +5 -5
  121. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +9 -9
  122. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +16 -14
  123. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +6 -6
  124. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +3 -3
  125. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1 -1
  126. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +7 -7
  127. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +17 -17
  128. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +3 -3
  129. data/src/core/lib/event_engine/posix_engine/timer.cc +5 -5
  130. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +5 -5
  131. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +3 -3
  132. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +1 -1
  133. data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
  134. data/src/core/lib/event_engine/thread_pool/thread_count.h +3 -3
  135. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +50 -21
  136. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +3 -3
  137. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +3 -3
  138. data/src/core/lib/event_engine/windows/windows_engine.cc +15 -15
  139. data/src/core/lib/event_engine/windows/windows_listener.cc +6 -6
  140. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +6 -6
  141. data/src/core/lib/experiments/experiments.cc +48 -0
  142. data/src/core/lib/experiments/experiments.h +24 -0
  143. data/src/core/lib/iomgr/buffer_list.cc +3 -3
  144. data/src/core/lib/iomgr/buffer_list.h +1 -1
  145. data/src/core/lib/iomgr/combiner.cc +0 -1
  146. data/src/core/lib/iomgr/ev_apple.cc +4 -4
  147. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
  148. data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
  149. data/src/core/lib/iomgr/tcp_posix.cc +7 -7
  150. data/src/core/lib/promise/activity.cc +1 -1
  151. data/src/core/lib/promise/activity.h +1 -1
  152. data/src/core/lib/promise/arena_promise.h +7 -7
  153. data/src/core/lib/promise/detail/promise_factory.h +8 -8
  154. data/src/core/lib/promise/detail/promise_like.h +4 -4
  155. data/src/core/lib/promise/inter_activity_latch.h +6 -6
  156. data/src/core/lib/promise/inter_activity_pipe.h +1 -1
  157. data/src/core/lib/promise/observable.h +3 -3
  158. data/src/core/lib/promise/party.cc +1 -1
  159. data/src/core/lib/promise/try_seq.h +2 -2
  160. data/src/core/lib/resource_quota/arena.h +3 -3
  161. data/src/core/lib/resource_quota/memory_quota.cc +16 -16
  162. data/src/core/lib/resource_quota/memory_quota.h +1 -1
  163. data/src/core/lib/resource_quota/thread_quota.cc +3 -3
  164. data/src/core/lib/security/authorization/audit_logging.cc +5 -5
  165. data/src/core/lib/security/authorization/authorization_engine.h +1 -1
  166. data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -1
  167. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
  168. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  169. data/src/core/lib/security/authorization/matchers.h +1 -1
  170. data/src/core/lib/surface/call.cc +8 -7
  171. data/src/core/lib/surface/call.h +3 -3
  172. data/src/core/lib/surface/call_utils.h +4 -0
  173. data/src/core/lib/surface/channel.cc +1 -1
  174. data/src/core/lib/surface/channel.h +1 -1
  175. data/src/core/lib/surface/channel_init.cc +1 -1
  176. data/src/core/lib/surface/init.cc +7 -7
  177. data/src/core/lib/surface/lame_client.cc +1 -1
  178. data/src/core/lib/surface/legacy_channel.cc +2 -2
  179. data/src/core/lib/surface/version.cc +1 -1
  180. data/src/core/lib/transport/transport_framing_endpoint_extension.h +3 -3
  181. data/src/core/load_balancing/autosharding/autosharding.cc +931 -0
  182. data/src/core/load_balancing/autosharding/autosharding.h +78 -0
  183. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -2
  184. data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
  185. data/src/core/load_balancing/grpclb/load_balancer_api.h +3 -1
  186. data/src/core/load_balancing/health_check_client.cc +7 -7
  187. data/src/core/load_balancing/lb_policy.cc +1 -1
  188. data/src/core/load_balancing/oob_backend_metric.cc +5 -5
  189. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
  190. data/src/core/load_balancing/ring_hash/ring_hash.cc +109 -37
  191. data/src/core/load_balancing/rls/rls.cc +23 -17
  192. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +10 -10
  193. data/src/core/load_balancing/xds/cds.cc +6 -5
  194. data/src/core/load_balancing/xds/xds_cluster_impl.cc +2 -2
  195. data/src/core/load_balancing/xds/xds_override_host.cc +10 -10
  196. data/src/core/mitigation_engine/mitigation_engine.h +28 -4
  197. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -0
  198. data/src/core/resolver/dns/dns_resolver.cc +7 -7
  199. data/src/core/resolver/fake/fake_resolver.cc +5 -5
  200. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +38 -30
  201. data/src/core/server/server.cc +30 -30
  202. data/src/core/server/server.h +4 -3
  203. data/src/core/server/server_config_selector_filter.cc +3 -3
  204. data/src/core/server/xds_server_config_fetcher_legacy.cc +15 -15
  205. data/src/core/telemetry/default_tcp_tracer.cc +1 -1
  206. data/src/core/telemetry/instrument.cc +30 -16
  207. data/src/core/telemetry/instrument.h +3 -3
  208. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
  209. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -4
  210. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +2 -2
  211. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  212. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -1
  213. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +5 -5
  214. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +3 -3
  215. data/src/core/tsi/ssl_transport_security.cc +46 -13
  216. data/src/core/tsi/ssl_transport_security.h +7 -0
  217. data/src/core/tsi/ssl_transport_security_utils.cc +16 -6
  218. data/src/core/util/event_log.cc +3 -3
  219. data/src/core/util/http_client/httpcli.cc +5 -5
  220. data/src/core/util/http_client/httpcli.h +1 -1
  221. data/src/core/util/json/json_object_loader.cc +7 -0
  222. data/src/core/util/json/json_object_loader.h +17 -2
  223. data/src/core/util/latent_see.cc +123 -36
  224. data/src/core/util/latent_see.h +14 -1
  225. data/src/core/util/mpscq.cc +1 -1
  226. data/src/core/util/notification.h +4 -4
  227. data/src/core/util/sync.h +20 -6
  228. data/src/core/util/table.h +20 -22
  229. data/src/core/util/work_serializer.cc +2 -2
  230. data/src/core/xds/grpc/blackboard.cc +4 -3
  231. data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
  232. data/src/core/xds/grpc/streaming_call_promise_wrapper.cc +181 -0
  233. data/src/core/xds/grpc/streaming_call_promise_wrapper.h +213 -0
  234. data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +2 -2
  235. data/src/core/xds/grpc/xds_client_grpc.cc +8 -8
  236. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
  237. data/src/core/xds/grpc/xds_endpoint.cc +1 -1
  238. data/src/core/xds/grpc/xds_endpoint_parser.cc +11 -0
  239. data/src/core/xds/grpc/xds_grpc_service_parser.cc +12 -10
  240. data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +17 -14
  241. data/src/core/xds/grpc/xds_matcher.h +2 -2
  242. data/src/core/xds/grpc/xds_transport_grpc.cc +125 -85
  243. data/src/core/xds/grpc/xds_transport_grpc.h +19 -4
  244. data/src/core/xds/xds_client/lrs_client.cc +22 -19
  245. data/src/core/xds/xds_client/xds_client.cc +19 -16
  246. data/src/core/xds/xds_client/xds_transport.h +49 -3
  247. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  248. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
  249. data/src/ruby/lib/grpc/version.rb +1 -1
  250. data/src/ruby/pb/README.md +1 -1
  251. data/src/ruby/pb/generate_proto_ruby.sh +1 -1
  252. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +34 -2
  253. data/third_party/abseil-cpp/absl/algorithm/container.h +345 -147
  254. data/third_party/abseil-cpp/absl/base/attributes.h +67 -44
  255. data/third_party/abseil-cpp/absl/base/call_once.h +1 -0
  256. data/third_party/abseil-cpp/absl/base/casts.cc +61 -0
  257. data/third_party/abseil-cpp/absl/base/casts.h +135 -2
  258. data/third_party/abseil-cpp/absl/base/config.h +63 -41
  259. data/third_party/abseil-cpp/absl/base/fast_type_id.h +30 -2
  260. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
  261. data/third_party/abseil-cpp/absl/base/internal/hardening.h +136 -0
  262. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +6 -2
  263. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -4
  264. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
  265. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
  266. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
  267. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +26 -24
  268. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +74 -29
  269. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -11
  270. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
  271. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +5 -1
  272. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
  273. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
  274. data/third_party/abseil-cpp/absl/base/macros.h +76 -37
  275. data/third_party/abseil-cpp/absl/base/nullability.h +5 -5
  276. data/third_party/abseil-cpp/absl/base/optimization.h +4 -5
  277. data/third_party/abseil-cpp/absl/base/options.h +46 -18
  278. data/third_party/abseil-cpp/absl/base/policy_checks.h +5 -5
  279. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
  280. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
  281. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +7 -2
  282. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
  283. data/third_party/abseil-cpp/absl/container/btree_map.h +60 -10
  284. data/third_party/abseil-cpp/absl/container/btree_set.h +61 -15
  285. data/third_party/abseil-cpp/absl/container/fixed_array.h +19 -21
  286. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +49 -27
  287. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +50 -26
  288. data/third_party/abseil-cpp/absl/container/inlined_vector.h +42 -36
  289. data/third_party/abseil-cpp/absl/container/internal/btree.h +32 -24
  290. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +30 -22
  291. data/third_party/abseil-cpp/absl/container/internal/common.h +57 -5
  292. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
  293. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +40 -36
  294. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +119 -39
  295. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +14 -2
  296. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +14 -22
  297. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +52 -52
  298. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +7 -7
  299. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +7 -7
  300. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +32 -40
  301. data/third_party/abseil-cpp/absl/container/internal/layout.h +13 -13
  302. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +95 -72
  303. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +633 -365
  304. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1016 -749
  305. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +0 -1
  306. data/third_party/abseil-cpp/absl/container/node_hash_map.h +58 -35
  307. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +23 -6
  308. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
  309. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -6
  310. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
  311. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
  312. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
  313. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +304 -188
  314. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
  315. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
  316. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
  317. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
  318. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc +15 -1
  319. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -1
  320. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +12 -1
  321. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
  322. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -11
  323. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
  324. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
  325. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +6 -1
  326. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +14 -8
  327. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +48 -38
  328. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
  329. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +63 -118
  330. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +7 -47
  331. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +20 -2
  332. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +83 -149
  333. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
  334. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
  335. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
  336. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +8 -6
  337. data/third_party/abseil-cpp/absl/flags/declare.h +9 -0
  338. data/third_party/abseil-cpp/absl/flags/flag.h +2 -1
  339. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
  340. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +19 -18
  341. data/third_party/abseil-cpp/absl/flags/internal/flag.h +33 -34
  342. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
  343. data/third_party/abseil-cpp/absl/flags/marshalling.cc +1 -16
  344. data/third_party/abseil-cpp/absl/flags/marshalling.h +2 -28
  345. data/third_party/abseil-cpp/absl/flags/reflection.cc +11 -7
  346. data/third_party/abseil-cpp/absl/flags/usage_config.cc +2 -2
  347. data/third_party/abseil-cpp/absl/functional/any_invocable.h +22 -19
  348. data/third_party/abseil-cpp/absl/functional/bind_front.h +7 -1
  349. data/third_party/abseil-cpp/absl/functional/function_ref.h +125 -20
  350. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +43 -31
  351. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
  352. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +44 -6
  353. data/third_party/abseil-cpp/absl/hash/hash.h +1 -1
  354. data/third_party/abseil-cpp/absl/hash/internal/city.cc +39 -51
  355. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +379 -14
  356. data/third_party/abseil-cpp/absl/hash/internal/hash.h +457 -353
  357. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
  358. data/third_party/abseil-cpp/absl/log/internal/check_impl.h +2 -1
  359. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +4 -0
  360. data/third_party/abseil-cpp/absl/log/internal/check_op.h +128 -50
  361. data/third_party/abseil-cpp/absl/log/internal/conditions.h +38 -35
  362. data/third_party/abseil-cpp/absl/log/internal/log_impl.h +108 -110
  363. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +10 -6
  364. data/third_party/abseil-cpp/absl/log/internal/log_message.h +19 -1
  365. data/third_party/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
  366. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -1
  367. data/third_party/abseil-cpp/absl/log/internal/proto.cc +13 -0
  368. data/third_party/abseil-cpp/absl/log/internal/strip.h +30 -31
  369. data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
  370. data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
  371. data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +30 -30
  372. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
  373. data/third_party/abseil-cpp/absl/log/log.h +2 -2
  374. data/third_party/abseil-cpp/absl/log/log_entry.cc +263 -0
  375. data/third_party/abseil-cpp/absl/log/log_entry.h +2 -0
  376. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +0 -2
  377. data/third_party/abseil-cpp/absl/memory/memory.h +55 -5
  378. data/third_party/abseil-cpp/absl/meta/type_traits.h +161 -56
  379. data/third_party/abseil-cpp/absl/numeric/int128.h +41 -21
  380. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
  381. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
  382. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +32 -4
  383. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
  384. data/third_party/abseil-cpp/absl/random/beta_distribution.h +2 -2
  385. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
  386. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +1 -1
  387. data/third_party/abseil-cpp/absl/random/distributions.h +17 -17
  388. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -1
  389. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
  390. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.cc +2 -2
  391. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
  392. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
  393. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
  394. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
  395. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
  396. data/third_party/abseil-cpp/absl/random/internal/platform.h +0 -13
  397. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
  398. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
  399. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
  400. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +5 -31
  401. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +2 -1
  402. data/third_party/abseil-cpp/absl/random/internal/traits.h +21 -0
  403. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
  404. data/third_party/abseil-cpp/absl/random/mocking_access.h +74 -0
  405. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  406. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
  407. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +30 -4
  408. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +225 -63
  409. data/third_party/abseil-cpp/absl/status/status.cc +66 -70
  410. data/third_party/abseil-cpp/absl/status/status.h +254 -23
  411. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +3 -2
  412. data/third_party/abseil-cpp/absl/status/statusor.h +117 -137
  413. data/third_party/abseil-cpp/absl/strings/ascii.h +10 -6
  414. data/third_party/abseil-cpp/absl/strings/cord.cc +41 -17
  415. data/third_party/abseil-cpp/absl/strings/cord.h +26 -17
  416. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +4 -2
  417. data/third_party/abseil-cpp/absl/strings/escaping.cc +305 -125
  418. data/third_party/abseil-cpp/absl/strings/escaping.h +12 -2
  419. data/third_party/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
  420. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +2 -2
  421. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
  422. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +27 -21
  423. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +11 -19
  424. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
  425. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
  426. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
  427. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +2 -24
  428. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -36
  429. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
  430. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
  431. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
  432. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
  433. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +921 -231
  434. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -16
  435. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +16 -12
  436. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
  437. data/third_party/abseil-cpp/absl/strings/numbers.cc +477 -8
  438. data/third_party/abseil-cpp/absl/strings/numbers.h +29 -12
  439. data/third_party/abseil-cpp/absl/strings/resize_and_overwrite.h +198 -0
  440. data/third_party/abseil-cpp/absl/strings/str_cat.cc +96 -91
  441. data/third_party/abseil-cpp/absl/strings/str_cat.h +53 -13
  442. data/third_party/abseil-cpp/absl/strings/str_split.h +14 -9
  443. data/third_party/abseil-cpp/absl/strings/string_view.h +10 -716
  444. data/third_party/abseil-cpp/absl/strings/substitute.cc +24 -24
  445. data/third_party/abseil-cpp/absl/strings/substitute.h +2 -2
  446. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +1 -1
  447. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
  448. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +24 -3
  449. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
  450. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
  451. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
  452. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +41 -29
  453. data/third_party/abseil-cpp/absl/synchronization/mutex.h +199 -94
  454. data/third_party/abseil-cpp/absl/synchronization/notification.cc +5 -5
  455. data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
  456. data/third_party/abseil-cpp/absl/time/clock.cc +29 -30
  457. data/third_party/abseil-cpp/absl/time/clock.h +3 -0
  458. data/third_party/abseil-cpp/absl/time/duration.cc +2 -2
  459. data/third_party/abseil-cpp/absl/time/format.cc +3 -10
  460. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
  461. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +131 -91
  462. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
  463. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +185 -0
  464. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
  465. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
  466. data/third_party/abseil-cpp/absl/time/time.cc +4 -4
  467. data/third_party/abseil-cpp/absl/time/time.h +14 -13
  468. data/third_party/abseil-cpp/absl/types/compare.h +64 -63
  469. data/third_party/abseil-cpp/absl/types/internal/span.h +6 -6
  470. data/third_party/abseil-cpp/absl/types/optional.h +31 -4
  471. data/third_party/abseil-cpp/absl/types/optional_ref.h +295 -0
  472. data/third_party/{boringssl-with-bazel/crypto/x509/x_val.cc → abseil-cpp/absl/types/source_location.cc} +4 -14
  473. data/third_party/abseil-cpp/absl/types/source_location.h +172 -0
  474. data/third_party/abseil-cpp/absl/types/span.h +67 -38
  475. data/third_party/abseil-cpp/absl/types/variant.h +75 -18
  476. data/third_party/abseil-cpp/absl/utility/utility.h +112 -16
  477. data/third_party/boringssl-with-bazel/crypto/aes/aes.cc +3 -0
  478. data/third_party/boringssl-with-bazel/crypto/armv8_feature_parsing.h +67 -0
  479. data/third_party/boringssl-with-bazel/crypto/asn1/a_bitstr.cc +143 -105
  480. data/third_party/boringssl-with-bazel/crypto/asn1/a_bool.cc +5 -8
  481. data/third_party/boringssl-with-bazel/crypto/asn1/a_d2i_fp.cc +3 -3
  482. data/third_party/boringssl-with-bazel/crypto/asn1/a_dup.cc +6 -6
  483. data/third_party/boringssl-with-bazel/crypto/asn1/a_gentm.cc +33 -12
  484. data/third_party/boringssl-with-bazel/crypto/asn1/a_i2d_fp.cc +7 -6
  485. data/third_party/boringssl-with-bazel/crypto/asn1/a_int.cc +80 -52
  486. data/third_party/boringssl-with-bazel/crypto/asn1/a_mbstr.cc +7 -4
  487. data/third_party/boringssl-with-bazel/crypto/asn1/a_object.cc +70 -72
  488. data/third_party/boringssl-with-bazel/crypto/asn1/a_strex.cc +38 -42
  489. data/third_party/boringssl-with-bazel/crypto/asn1/a_strnid.cc +41 -39
  490. data/third_party/boringssl-with-bazel/crypto/asn1/a_time.cc +59 -35
  491. data/third_party/boringssl-with-bazel/crypto/asn1/a_type.cc +275 -15
  492. data/third_party/boringssl-with-bazel/crypto/asn1/a_utctm.cc +32 -13
  493. data/third_party/boringssl-with-bazel/crypto/asn1/asn1_lib.cc +128 -30
  494. data/third_party/boringssl-with-bazel/crypto/asn1/asn_pack.cc +10 -10
  495. data/third_party/boringssl-with-bazel/crypto/asn1/f_int.cc +1 -1
  496. data/third_party/boringssl-with-bazel/crypto/asn1/f_string.cc +1 -1
  497. data/third_party/boringssl-with-bazel/crypto/asn1/internal.h +261 -115
  498. data/third_party/boringssl-with-bazel/crypto/asn1/posix_time.cc +8 -5
  499. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_dec.cc +373 -725
  500. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_enc.cc +211 -526
  501. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_fre.cc +22 -19
  502. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_new.cc +26 -24
  503. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_typ.cc +19 -5
  504. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_utl.cc +47 -51
  505. data/third_party/boringssl-with-bazel/crypto/base64/base64.cc +14 -15
  506. data/third_party/boringssl-with-bazel/crypto/bcm_support.h +7 -29
  507. data/third_party/boringssl-with-bazel/crypto/bio/bio.cc +234 -176
  508. data/third_party/boringssl-with-bazel/crypto/bio/bio_mem.cc +72 -86
  509. data/third_party/boringssl-with-bazel/crypto/bio/connect.cc +153 -199
  510. data/third_party/boringssl-with-bazel/crypto/bio/errno.cc +3 -1
  511. data/third_party/boringssl-with-bazel/crypto/bio/fd.cc +56 -55
  512. data/third_party/boringssl-with-bazel/crypto/bio/file.cc +70 -78
  513. data/third_party/boringssl-with-bazel/crypto/bio/hexdump.cc +6 -4
  514. data/third_party/boringssl-with-bazel/crypto/bio/internal.h +69 -17
  515. data/third_party/boringssl-with-bazel/crypto/bio/pair.cc +117 -136
  516. data/third_party/boringssl-with-bazel/crypto/bio/printf.cc +1 -1
  517. data/third_party/boringssl-with-bazel/crypto/bio/socket.cc +116 -50
  518. data/third_party/boringssl-with-bazel/crypto/bio/socket_helper.cc +53 -5
  519. data/third_party/boringssl-with-bazel/crypto/blake2/blake2.cc +9 -5
  520. data/third_party/boringssl-with-bazel/crypto/bn/bn_asn1.cc +2 -2
  521. data/third_party/boringssl-with-bazel/crypto/bn/convert.cc +56 -70
  522. data/third_party/boringssl-with-bazel/crypto/bn/div.cc +102 -0
  523. data/third_party/boringssl-with-bazel/crypto/bn/exponentiation.cc +26 -42
  524. data/third_party/boringssl-with-bazel/crypto/bn/sqrt.cc +93 -0
  525. data/third_party/boringssl-with-bazel/crypto/buf/buf.cc +6 -5
  526. data/third_party/boringssl-with-bazel/crypto/bytestring/asn1_compat.cc +6 -5
  527. data/third_party/boringssl-with-bazel/crypto/bytestring/ber.cc +22 -20
  528. data/third_party/boringssl-with-bazel/crypto/bytestring/cbb.cc +119 -59
  529. data/third_party/boringssl-with-bazel/crypto/bytestring/cbs.cc +115 -31
  530. data/third_party/boringssl-with-bazel/crypto/bytestring/internal.h +79 -24
  531. data/third_party/boringssl-with-bazel/crypto/bytestring/unicode.cc +2 -2
  532. data/third_party/boringssl-with-bazel/crypto/chacha/chacha.cc +5 -3
  533. data/third_party/boringssl-with-bazel/crypto/chacha/internal.h +23 -22
  534. data/third_party/boringssl-with-bazel/crypto/cipher/derive_key.cc +14 -18
  535. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesctrhmac.cc +73 -58
  536. data/third_party/boringssl-with-bazel/crypto/cipher/e_aeseax.cc +132 -70
  537. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesgcmsiv.cc +390 -249
  538. data/third_party/boringssl-with-bazel/crypto/cipher/e_chacha20poly1305.cc +200 -137
  539. data/third_party/boringssl-with-bazel/crypto/cipher/e_des.cc +45 -29
  540. data/third_party/boringssl-with-bazel/crypto/cipher/e_null.cc +9 -5
  541. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc2.cc +43 -28
  542. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc4.cc +7 -5
  543. data/third_party/boringssl-with-bazel/crypto/cipher/e_tls.cc +250 -237
  544. data/third_party/boringssl-with-bazel/crypto/cipher/get_cipher.cc +12 -12
  545. data/third_party/boringssl-with-bazel/crypto/cipher/internal.h +59 -59
  546. data/third_party/boringssl-with-bazel/crypto/cipher/tls_cbc.cc +111 -111
  547. data/third_party/boringssl-with-bazel/crypto/cms/cms.cc +48 -42
  548. data/third_party/boringssl-with-bazel/crypto/conf/conf.cc +69 -63
  549. data/third_party/boringssl-with-bazel/crypto/conf/internal.h +11 -12
  550. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_apple.cc +8 -5
  551. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_fuchsia.cc +6 -1
  552. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_linux.cc +7 -1
  553. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_openbsd.cc +7 -21
  554. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_sysreg.cc +15 -41
  555. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_win.cc +16 -3
  556. data/third_party/boringssl-with-bazel/crypto/cpu_arm_freebsd.cc +4 -2
  557. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.cc +54 -31
  558. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.h +79 -101
  559. data/third_party/boringssl-with-bazel/crypto/cpu_intel.cc +51 -45
  560. data/third_party/boringssl-with-bazel/crypto/crypto.cc +26 -55
  561. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519.cc +28 -25
  562. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519_tables.h +6 -6
  563. data/third_party/boringssl-with-bazel/crypto/curve25519/internal.h +14 -15
  564. data/third_party/boringssl-with-bazel/crypto/curve25519/spake25519.cc +23 -20
  565. data/third_party/boringssl-with-bazel/crypto/des/des.cc +27 -19
  566. data/third_party/boringssl-with-bazel/crypto/des/internal.h +4 -9
  567. data/third_party/boringssl-with-bazel/crypto/dh/dh_asn1.cc +34 -49
  568. data/third_party/boringssl-with-bazel/crypto/dh/params.cc +44 -41
  569. data/third_party/boringssl-with-bazel/crypto/digest/digest_extra.cc +87 -40
  570. data/third_party/boringssl-with-bazel/crypto/dsa/dsa.cc +237 -260
  571. data/third_party/boringssl-with-bazel/crypto/dsa/dsa_asn1.cc +100 -173
  572. data/third_party/boringssl-with-bazel/crypto/dsa/internal.h +23 -21
  573. data/third_party/boringssl-with-bazel/crypto/ec/ec_asn1.cc +181 -209
  574. data/third_party/boringssl-with-bazel/crypto/ec/ec_derive.cc +26 -28
  575. data/third_party/boringssl-with-bazel/crypto/ec/hash_to_curve.cc +265 -174
  576. data/third_party/boringssl-with-bazel/crypto/ec/internal.h +54 -18
  577. data/third_party/boringssl-with-bazel/crypto/ecdh/ecdh.cc +7 -5
  578. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_asn1.cc +50 -70
  579. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_p1363.cc +54 -0
  580. data/third_party/boringssl-with-bazel/crypto/engine/engine.cc +7 -7
  581. data/third_party/boringssl-with-bazel/crypto/err/err.cc +116 -105
  582. data/third_party/boringssl-with-bazel/crypto/err/internal.h +8 -21
  583. data/third_party/boringssl-with-bazel/crypto/evp/evp.cc +238 -166
  584. data/third_party/boringssl-with-bazel/crypto/evp/evp_asn1.cc +202 -234
  585. data/third_party/boringssl-with-bazel/crypto/evp/evp_ctx.cc +260 -159
  586. data/third_party/boringssl-with-bazel/crypto/evp/evp_kem.cc +82 -0
  587. data/third_party/boringssl-with-bazel/crypto/evp/internal.h +292 -137
  588. data/third_party/boringssl-with-bazel/crypto/evp/p_dh.cc +198 -25
  589. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa.cc +333 -0
  590. data/third_party/boringssl-with-bazel/crypto/evp/p_ec.cc +427 -42
  591. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519.cc +270 -14
  592. data/third_party/boringssl-with-bazel/crypto/evp/p_hkdf.cc +70 -102
  593. data/third_party/boringssl-with-bazel/crypto/evp/p_mldsa.cc +549 -0
  594. data/third_party/boringssl-with-bazel/crypto/evp/p_mlkem.cc +485 -0
  595. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa.cc +666 -158
  596. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519.cc +290 -28
  597. data/third_party/boringssl-with-bazel/crypto/evp/p_xwing.cc +273 -0
  598. data/third_party/boringssl-with-bazel/crypto/evp/pbkdf.cc +14 -7
  599. data/third_party/boringssl-with-bazel/crypto/evp/print.cc +34 -89
  600. data/third_party/boringssl-with-bazel/crypto/evp/scrypt.cc +23 -21
  601. data/third_party/boringssl-with-bazel/crypto/evp/sign.cc +23 -42
  602. data/third_party/boringssl-with-bazel/crypto/ex_data.cc +40 -41
  603. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes.cc.inc +34 -28
  604. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes_nohw.cc.inc +119 -121
  605. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cbc.cc.inc +16 -14
  606. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cfb.cc.inc +12 -10
  607. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ctr.cc.inc +7 -5
  608. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm.cc.inc +39 -29
  609. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm_nohw.cc.inc +15 -13
  610. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/internal.h +193 -177
  611. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/key_wrap.cc.inc +5 -3
  612. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/mode_wrappers.cc.inc +7 -3
  613. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ofb.cc.inc +7 -5
  614. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm.cc +24 -19
  615. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm_interface.h +512 -384
  616. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/add.cc.inc +7 -5
  617. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +63 -44
  618. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bn.cc.inc +40 -37
  619. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bytes.cc.inc +27 -22
  620. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/cmp.cc.inc +9 -7
  621. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/ctx.cc.inc +62 -126
  622. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div.cc.inc +92 -167
  623. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div_extra.cc.inc +15 -12
  624. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/exponentiation.cc.inc +96 -93
  625. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd.cc.inc +73 -92
  626. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd_extra.cc.inc +59 -71
  627. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/generic.cc.inc +54 -57
  628. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/internal.h +333 -255
  629. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/jacobi.cc.inc +12 -19
  630. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery.cc.inc +80 -95
  631. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery_inv.cc.inc +53 -96
  632. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/mul.cc.inc +58 -419
  633. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/prime.cc.inc +164 -213
  634. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/random.cc.inc +27 -26
  635. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.cc.inc +12 -10
  636. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.h +47 -49
  637. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/shift.cc.inc +14 -17
  638. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/sqrt.cc.inc +19 -108
  639. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/aead.cc.inc +427 -105
  640. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/cipher.cc.inc +412 -212
  641. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aes.cc.inc +230 -225
  642. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aesccm.cc.inc +115 -84
  643. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/internal.h +374 -27
  644. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cmac/cmac.cc.inc +28 -23
  645. data/third_party/boringssl-with-bazel/crypto/fipsmodule/delocate.h +36 -40
  646. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/check.cc.inc +68 -78
  647. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/dh.cc.inc +154 -196
  648. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/internal.h +24 -24
  649. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digest.cc.inc +40 -69
  650. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digests.cc.inc +13 -7
  651. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/internal.h +13 -11
  652. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/md32_common.h +86 -81
  653. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digestsign/digestsign.cc.inc +38 -34
  654. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec.cc.inc +187 -196
  655. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_key.cc.inc +196 -154
  656. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_montgomery.cc.inc +65 -125
  657. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/felem.cc.inc +85 -22
  658. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/internal.h +281 -287
  659. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/oct.cc.inc +23 -22
  660. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256.cc.inc +514 -573
  661. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256_internal.h +193 -0
  662. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/scalar.cc.inc +44 -39
  663. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple.cc.inc +58 -90
  664. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple_mul.cc.inc +39 -34
  665. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/util.cc.inc +6 -3
  666. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/wnaf.cc.inc +23 -20
  667. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdh/ecdh.cc.inc +6 -3
  668. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +47 -37
  669. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/internal.h +5 -10
  670. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/internal.h +38 -0
  671. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/jitter.cc.inc +463 -0
  672. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
  673. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hkdf/hkdf.cc.inc +8 -6
  674. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hmac/hmac.cc.inc +19 -16
  675. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/internal.h +41 -15
  676. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/keccak.cc.inc +172 -44
  677. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/fips_known_values.inc +5 -5
  678. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/mldsa.cc.inc +1632 -766
  679. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/fips_known_values.inc +5 -5
  680. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/mlkem.cc.inc +740 -436
  681. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
  682. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/ctrdrbg.cc.inc +240 -53
  683. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/internal.h +41 -26
  684. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/rand.cc.inc +221 -218
  685. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/internal.h +64 -67
  686. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/padding.cc.inc +49 -57
  687. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa.cc.inc +247 -234
  688. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa_impl.cc.inc +392 -692
  689. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/fips.cc.inc +10 -10
  690. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/self_check.cc.inc +479 -449
  691. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/internal.h +34 -11
  692. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +46 -43
  693. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/internal.h +61 -70
  694. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha1.cc.inc +27 -13
  695. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha256.cc.inc +46 -30
  696. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha512.cc.inc +47 -47
  697. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/address.h +98 -73
  698. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.cc.inc +108 -98
  699. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.h +14 -24
  700. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.cc.inc +94 -91
  701. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.h +19 -31
  702. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/params.h +156 -56
  703. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +318 -132
  704. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.cc.inc +234 -81
  705. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.h +20 -34
  706. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.cc.inc +97 -96
  707. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.h +10 -20
  708. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/internal.h +2 -16
  709. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/kdf.cc.inc +26 -26
  710. data/third_party/boringssl-with-bazel/crypto/fuzzer_mode.cc +5 -5
  711. data/third_party/boringssl-with-bazel/crypto/hpke/hpke.cc +461 -97
  712. data/third_party/boringssl-with-bazel/crypto/hrss/hrss.cc +153 -149
  713. data/third_party/boringssl-with-bazel/crypto/hrss/internal.h +9 -13
  714. data/third_party/boringssl-with-bazel/crypto/internal.h +531 -394
  715. data/third_party/boringssl-with-bazel/crypto/kyber/internal.h +117 -12
  716. data/third_party/boringssl-with-bazel/crypto/kyber/kyber.cc +59 -58
  717. data/third_party/boringssl-with-bazel/crypto/lhash/internal.h +38 -37
  718. data/third_party/boringssl-with-bazel/crypto/lhash/lhash.cc +68 -65
  719. data/third_party/boringssl-with-bazel/crypto/md4/md4.cc +19 -6
  720. data/third_party/boringssl-with-bazel/crypto/md5/internal.h +6 -9
  721. data/third_party/boringssl-with-bazel/crypto/md5/md5.cc +18 -6
  722. data/third_party/boringssl-with-bazel/crypto/mem.cc +61 -65
  723. data/third_party/boringssl-with-bazel/crypto/mem_internal.h +671 -0
  724. data/third_party/boringssl-with-bazel/crypto/mldsa/mldsa.cc +238 -32
  725. data/third_party/boringssl-with-bazel/crypto/mlkem/mlkem.cc +21 -65
  726. data/third_party/boringssl-with-bazel/crypto/obj/obj.cc +132 -157
  727. data/third_party/boringssl-with-bazel/crypto/obj/obj_dat.h +79 -1
  728. data/third_party/boringssl-with-bazel/crypto/obj/obj_xref.cc +14 -11
  729. data/third_party/boringssl-with-bazel/crypto/params_internal.h +30 -0
  730. data/third_party/boringssl-with-bazel/crypto/pem/internal.h +20 -15
  731. data/third_party/boringssl-with-bazel/crypto/pem/pem_all.cc +20 -19
  732. data/third_party/boringssl-with-bazel/crypto/pem/pem_info.cc +72 -76
  733. data/third_party/boringssl-with-bazel/crypto/pem/pem_lib.cc +215 -217
  734. data/third_party/boringssl-with-bazel/crypto/pem/pem_oth.cc +6 -6
  735. data/third_party/boringssl-with-bazel/crypto/pem/pem_pk8.cc +13 -13
  736. data/third_party/boringssl-with-bazel/crypto/pem/pem_pkey.cc +11 -11
  737. data/third_party/boringssl-with-bazel/crypto/pkcs7/internal.h +12 -17
  738. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7.cc +29 -27
  739. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7_x509.cc +55 -49
  740. data/third_party/boringssl-with-bazel/crypto/pkcs8/internal.h +21 -26
  741. data/third_party/boringssl-with-bazel/crypto/pkcs8/p5_pbev2.cc +33 -31
  742. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8.cc +73 -81
  743. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8_x509.cc +139 -138
  744. data/third_party/boringssl-with-bazel/crypto/poly1305/internal.h +3 -7
  745. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305.cc +5 -4
  746. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_arm.cc +43 -47
  747. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_vec.cc +29 -26
  748. data/third_party/boringssl-with-bazel/crypto/pool/internal.h +64 -20
  749. data/third_party/boringssl-with-bazel/crypto/pool/pool.cc +177 -157
  750. data/third_party/boringssl-with-bazel/crypto/rand/deterministic.cc +9 -16
  751. data/third_party/boringssl-with-bazel/crypto/rand/fork_detect.cc +70 -42
  752. data/third_party/boringssl-with-bazel/crypto/rand/forkunsafe.cc +7 -7
  753. data/third_party/boringssl-with-bazel/crypto/rand/getentropy.cc +6 -13
  754. data/third_party/boringssl-with-bazel/crypto/rand/internal.h +16 -4
  755. data/third_party/boringssl-with-bazel/crypto/rand/ios.cc +4 -11
  756. data/third_party/boringssl-with-bazel/crypto/rand/rand.cc +11 -9
  757. data/third_party/boringssl-with-bazel/crypto/rand/trusty.cc +4 -11
  758. data/third_party/boringssl-with-bazel/crypto/rand/urandom.cc +16 -195
  759. data/third_party/boringssl-with-bazel/crypto/rand/windows.cc +12 -19
  760. data/third_party/boringssl-with-bazel/crypto/refcount.cc +7 -17
  761. data/third_party/boringssl-with-bazel/crypto/rsa/internal.h +22 -7
  762. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_asn1.cc +199 -78
  763. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_crypt.cc +49 -50
  764. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_extra.cc +11 -0
  765. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_print.cc +4 -6
  766. data/third_party/boringssl-with-bazel/crypto/sha/sha1.cc +3 -0
  767. data/third_party/boringssl-with-bazel/crypto/sha/sha256.cc +3 -1
  768. data/third_party/boringssl-with-bazel/crypto/sha/sha512.cc +6 -4
  769. data/third_party/boringssl-with-bazel/crypto/siphash/siphash.cc +2 -0
  770. data/third_party/boringssl-with-bazel/crypto/slhdsa/slhdsa.cc +43 -6
  771. data/third_party/boringssl-with-bazel/crypto/spake2plus/internal.h +31 -31
  772. data/third_party/boringssl-with-bazel/crypto/spake2plus/spake2plus.cc +1 -1
  773. data/third_party/boringssl-with-bazel/crypto/stack/stack.cc +89 -130
  774. data/third_party/boringssl-with-bazel/crypto/thread.cc +14 -14
  775. data/third_party/boringssl-with-bazel/crypto/thread_none.cc +10 -13
  776. data/third_party/boringssl-with-bazel/crypto/thread_pthread.cc +22 -35
  777. data/third_party/boringssl-with-bazel/crypto/thread_win.cc +29 -40
  778. data/third_party/boringssl-with-bazel/crypto/trust_token/internal.h +81 -88
  779. data/third_party/boringssl-with-bazel/crypto/trust_token/pmbtoken.cc +160 -144
  780. data/third_party/boringssl-with-bazel/crypto/trust_token/trust_token.cc +96 -80
  781. data/third_party/boringssl-with-bazel/crypto/trust_token/voprf.cc +90 -87
  782. data/third_party/boringssl-with-bazel/crypto/x509/a_digest.cc +5 -5
  783. data/third_party/boringssl-with-bazel/crypto/x509/a_sign.cc +51 -48
  784. data/third_party/boringssl-with-bazel/crypto/x509/a_verify.cc +30 -34
  785. data/third_party/boringssl-with-bazel/crypto/x509/algorithm.cc +47 -16
  786. data/third_party/boringssl-with-bazel/crypto/x509/asn1_gen.cc +41 -43
  787. data/third_party/boringssl-with-bazel/crypto/x509/by_dir.cc +183 -237
  788. data/third_party/boringssl-with-bazel/crypto/x509/by_file.cc +29 -30
  789. data/third_party/boringssl-with-bazel/crypto/x509/internal.h +276 -180
  790. data/third_party/boringssl-with-bazel/crypto/x509/name_print.cc +15 -13
  791. data/third_party/boringssl-with-bazel/crypto/x509/policy.cc +415 -525
  792. data/third_party/boringssl-with-bazel/crypto/x509/rsa_pss.cc +94 -271
  793. data/third_party/boringssl-with-bazel/crypto/x509/t_crl.cc +11 -8
  794. data/third_party/boringssl-with-bazel/crypto/x509/t_req.cc +26 -23
  795. data/third_party/boringssl-with-bazel/crypto/x509/t_x509.cc +26 -22
  796. data/third_party/boringssl-with-bazel/crypto/x509/t_x509a.cc +3 -1
  797. data/third_party/boringssl-with-bazel/crypto/x509/v3_akey.cc +69 -76
  798. data/third_party/boringssl-with-bazel/crypto/x509/v3_akeya.cc +2 -2
  799. data/third_party/boringssl-with-bazel/crypto/x509/v3_alt.cc +112 -69
  800. data/third_party/boringssl-with-bazel/crypto/x509/v3_bcons.cc +15 -14
  801. data/third_party/boringssl-with-bazel/crypto/x509/v3_bitst.cc +16 -18
  802. data/third_party/boringssl-with-bazel/crypto/x509/v3_conf.cc +62 -67
  803. data/third_party/boringssl-with-bazel/crypto/x509/v3_cpols.cc +143 -170
  804. data/third_party/boringssl-with-bazel/crypto/x509/v3_crld.cc +121 -165
  805. data/third_party/boringssl-with-bazel/crypto/x509/v3_enum.cc +13 -12
  806. data/third_party/boringssl-with-bazel/crypto/x509/v3_extku.cc +17 -34
  807. data/third_party/boringssl-with-bazel/crypto/x509/v3_genn.cc +20 -10
  808. data/third_party/boringssl-with-bazel/crypto/x509/v3_ia5.cc +22 -18
  809. data/third_party/boringssl-with-bazel/crypto/x509/v3_info.cc +45 -47
  810. data/third_party/boringssl-with-bazel/crypto/x509/v3_int.cc +35 -33
  811. data/third_party/boringssl-with-bazel/crypto/x509/v3_lib.cc +106 -61
  812. data/third_party/boringssl-with-bazel/crypto/x509/v3_ncons.cc +642 -358
  813. data/third_party/boringssl-with-bazel/crypto/x509/v3_ocsp.cc +25 -22
  814. data/third_party/boringssl-with-bazel/crypto/x509/v3_pcons.cc +15 -14
  815. data/third_party/boringssl-with-bazel/crypto/x509/v3_pmaps.cc +16 -15
  816. data/third_party/boringssl-with-bazel/crypto/x509/v3_prn.cc +6 -6
  817. data/third_party/boringssl-with-bazel/crypto/x509/v3_purp.cc +150 -137
  818. data/third_party/boringssl-with-bazel/crypto/x509/v3_skey.cc +23 -26
  819. data/third_party/boringssl-with-bazel/crypto/x509/v3_utl.cc +151 -178
  820. data/third_party/boringssl-with-bazel/crypto/x509/x509.cc +1 -1
  821. data/third_party/boringssl-with-bazel/crypto/x509/x509_att.cc +32 -30
  822. data/third_party/boringssl-with-bazel/crypto/x509/x509_cmp.cc +95 -88
  823. data/third_party/boringssl-with-bazel/crypto/x509/x509_d2.cc +9 -9
  824. data/third_party/boringssl-with-bazel/crypto/x509/x509_def.cc +6 -8
  825. data/third_party/boringssl-with-bazel/crypto/x509/x509_ext.cc +46 -24
  826. data/third_party/boringssl-with-bazel/crypto/x509/x509_lu.cc +211 -195
  827. data/third_party/boringssl-with-bazel/crypto/x509/x509_obj.cc +20 -16
  828. data/third_party/boringssl-with-bazel/crypto/x509/x509_req.cc +37 -46
  829. data/third_party/boringssl-with-bazel/crypto/x509/x509_set.cc +62 -90
  830. data/third_party/boringssl-with-bazel/crypto/x509/x509_trs.cc +18 -13
  831. data/third_party/boringssl-with-bazel/crypto/x509/x509_v3.cc +33 -33
  832. data/third_party/boringssl-with-bazel/crypto/x509/x509_vfy.cc +109 -110
  833. data/third_party/boringssl-with-bazel/crypto/x509/x509_vpm.cc +56 -47
  834. data/third_party/boringssl-with-bazel/crypto/x509/x509cset.cc +27 -40
  835. data/third_party/boringssl-with-bazel/crypto/x509/x509name.cc +77 -67
  836. data/third_party/boringssl-with-bazel/crypto/x509/x509rset.cc +5 -17
  837. data/third_party/boringssl-with-bazel/crypto/x509/x509spki.cc +13 -13
  838. data/third_party/boringssl-with-bazel/crypto/x509/x_algor.cc +131 -24
  839. data/third_party/boringssl-with-bazel/crypto/x509/x_all.cc +72 -39
  840. data/third_party/boringssl-with-bazel/crypto/x509/x_attrib.cc +10 -4
  841. data/third_party/boringssl-with-bazel/crypto/x509/x_crl.cc +77 -44
  842. data/third_party/boringssl-with-bazel/crypto/x509/x_exten.cc +6 -0
  843. data/third_party/boringssl-with-bazel/crypto/x509/x_name.cc +311 -383
  844. data/third_party/boringssl-with-bazel/crypto/x509/x_pubkey.cc +129 -82
  845. data/third_party/boringssl-with-bazel/crypto/x509/x_req.cc +11 -6
  846. data/third_party/boringssl-with-bazel/crypto/x509/x_sig.cc +4 -4
  847. data/third_party/boringssl-with-bazel/crypto/x509/x_spki.cc +11 -1
  848. data/third_party/boringssl-with-bazel/crypto/x509/x_x509.cc +285 -280
  849. data/third_party/boringssl-with-bazel/crypto/x509/x_x509a.cc +60 -60
  850. data/third_party/boringssl-with-bazel/crypto/xwing/xwing.cc +257 -0
  851. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +301 -0
  852. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +301 -0
  853. data/third_party/boringssl-with-bazel/gen/crypto/err_data.cc +526 -500
  854. data/third_party/boringssl-with-bazel/include/openssl/aead.h +286 -114
  855. data/third_party/boringssl-with-bazel/include/openssl/aes.h +43 -43
  856. data/third_party/boringssl-with-bazel/include/openssl/asm_base.h +29 -16
  857. data/third_party/boringssl-with-bazel/include/openssl/asn1.h +641 -631
  858. data/third_party/boringssl-with-bazel/include/openssl/asn1t.h +7 -9
  859. data/third_party/boringssl-with-bazel/include/openssl/base.h +34 -54
  860. data/third_party/boringssl-with-bazel/include/openssl/base64.h +30 -30
  861. data/third_party/boringssl-with-bazel/include/openssl/bio.h +373 -316
  862. data/third_party/boringssl-with-bazel/include/openssl/blake2.h +15 -11
  863. data/third_party/boringssl-with-bazel/include/openssl/blowfish.h +10 -3
  864. data/third_party/boringssl-with-bazel/include/openssl/bn.h +298 -306
  865. data/third_party/boringssl-with-bazel/include/openssl/buf.h +14 -14
  866. data/third_party/boringssl-with-bazel/include/openssl/bytestring.h +272 -207
  867. data/third_party/boringssl-with-bazel/include/openssl/cast.h +45 -8
  868. data/third_party/boringssl-with-bazel/include/openssl/chacha.h +3 -3
  869. data/third_party/boringssl-with-bazel/include/openssl/cipher.h +334 -152
  870. data/third_party/boringssl-with-bazel/include/openssl/cmac.h +13 -13
  871. data/third_party/boringssl-with-bazel/include/openssl/cms.h +35 -34
  872. data/third_party/boringssl-with-bazel/include/openssl/conf.h +15 -14
  873. data/third_party/boringssl-with-bazel/include/openssl/crypto.h +15 -13
  874. data/third_party/boringssl-with-bazel/include/openssl/ctrdrbg.h +49 -15
  875. data/third_party/boringssl-with-bazel/include/openssl/curve25519.h +24 -24
  876. data/third_party/boringssl-with-bazel/include/openssl/des.h +22 -16
  877. data/third_party/boringssl-with-bazel/include/openssl/dh.h +95 -95
  878. data/third_party/boringssl-with-bazel/include/openssl/digest.h +140 -71
  879. data/third_party/boringssl-with-bazel/include/openssl/dsa.h +101 -101
  880. data/third_party/boringssl-with-bazel/include/openssl/ec.h +143 -119
  881. data/third_party/boringssl-with-bazel/include/openssl/ec_key.h +97 -97
  882. data/third_party/boringssl-with-bazel/include/openssl/ecdh.h +9 -9
  883. data/third_party/boringssl-with-bazel/include/openssl/ecdsa.h +89 -46
  884. data/third_party/boringssl-with-bazel/include/openssl/engine.h +5 -5
  885. data/third_party/boringssl-with-bazel/include/openssl/err.h +73 -71
  886. data/third_party/boringssl-with-bazel/include/openssl/evp.h +824 -344
  887. data/third_party/boringssl-with-bazel/include/openssl/evp_errors.h +9 -2
  888. data/third_party/boringssl-with-bazel/include/openssl/ex_data.h +27 -32
  889. data/third_party/boringssl-with-bazel/include/openssl/hkdf.h +6 -6
  890. data/third_party/boringssl-with-bazel/include/openssl/hmac.h +31 -31
  891. data/third_party/boringssl-with-bazel/include/openssl/hpke.h +133 -117
  892. data/third_party/boringssl-with-bazel/include/openssl/hrss.h +14 -8
  893. data/third_party/boringssl-with-bazel/include/openssl/kdf.h +20 -19
  894. data/third_party/boringssl-with-bazel/include/openssl/lhash.h +4 -25
  895. data/third_party/boringssl-with-bazel/include/openssl/md4.h +14 -7
  896. data/third_party/boringssl-with-bazel/include/openssl/md5.h +7 -7
  897. data/third_party/boringssl-with-bazel/include/openssl/mem.h +38 -38
  898. data/third_party/boringssl-with-bazel/include/openssl/mldsa.h +380 -24
  899. data/third_party/boringssl-with-bazel/include/openssl/mlkem.h +43 -43
  900. data/third_party/boringssl-with-bazel/include/openssl/nid.h +1297 -2
  901. data/third_party/boringssl-with-bazel/include/openssl/obj.h +49 -49
  902. data/third_party/boringssl-with-bazel/include/openssl/opensslconf.h +30 -0
  903. data/third_party/boringssl-with-bazel/include/openssl/params.h +42 -0
  904. data/third_party/boringssl-with-bazel/include/openssl/pem.h +39 -30
  905. data/third_party/boringssl-with-bazel/include/openssl/pkcs7.h +40 -40
  906. data/third_party/boringssl-with-bazel/include/openssl/pkcs8.h +69 -63
  907. data/third_party/boringssl-with-bazel/include/openssl/poly1305.h +8 -5
  908. data/third_party/boringssl-with-bazel/include/openssl/pool.h +54 -25
  909. data/third_party/boringssl-with-bazel/include/openssl/posix_time.h +6 -6
  910. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols.h +7866 -0
  911. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_S.h +585 -0
  912. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_c.h +305 -0
  913. data/third_party/boringssl-with-bazel/include/openssl/rand.h +18 -18
  914. data/third_party/boringssl-with-bazel/include/openssl/rc4.h +4 -4
  915. data/third_party/boringssl-with-bazel/include/openssl/ripemd.h +15 -10
  916. data/third_party/boringssl-with-bazel/include/openssl/rsa.h +272 -235
  917. data/third_party/boringssl-with-bazel/include/openssl/service_indicator.h +4 -81
  918. data/third_party/boringssl-with-bazel/include/openssl/sha.h +43 -166
  919. data/third_party/boringssl-with-bazel/include/openssl/sha2.h +201 -0
  920. data/third_party/boringssl-with-bazel/include/openssl/slhdsa.h +100 -48
  921. data/third_party/boringssl-with-bazel/include/openssl/span.h +190 -75
  922. data/third_party/boringssl-with-bazel/include/openssl/ssl.h +2168 -1567
  923. data/third_party/boringssl-with-bazel/include/openssl/ssl3.h +11 -69
  924. data/third_party/boringssl-with-bazel/include/openssl/stack.h +135 -80
  925. data/third_party/boringssl-with-bazel/include/openssl/target.h +13 -1
  926. data/third_party/boringssl-with-bazel/include/openssl/thread.h +0 -10
  927. data/third_party/boringssl-with-bazel/include/openssl/tls1.h +31 -310
  928. data/third_party/boringssl-with-bazel/include/openssl/tls_prf.h +47 -0
  929. data/third_party/boringssl-with-bazel/include/openssl/trust_token.h +97 -92
  930. data/third_party/boringssl-with-bazel/include/openssl/type_check.h +1 -1
  931. data/third_party/boringssl-with-bazel/include/openssl/x509.h +1805 -1857
  932. data/third_party/boringssl-with-bazel/include/openssl/x509v3.h +1 -1
  933. data/third_party/boringssl-with-bazel/include/openssl/xwing.h +115 -0
  934. data/third_party/boringssl-with-bazel/ssl/bio_ssl.cc +24 -19
  935. data/third_party/boringssl-with-bazel/ssl/d1_both.cc +59 -57
  936. data/third_party/boringssl-with-bazel/ssl/d1_lib.cc +53 -42
  937. data/third_party/boringssl-with-bazel/ssl/d1_pkt.cc +4 -4
  938. data/third_party/boringssl-with-bazel/ssl/d1_srtp.cc +2 -2
  939. data/third_party/boringssl-with-bazel/ssl/dtls_method.cc +10 -10
  940. data/third_party/boringssl-with-bazel/ssl/dtls_record.cc +6 -6
  941. data/third_party/boringssl-with-bazel/ssl/encrypted_client_hello.cc +61 -71
  942. data/third_party/boringssl-with-bazel/ssl/extensions.cc +967 -366
  943. data/third_party/boringssl-with-bazel/ssl/handoff.cc +77 -38
  944. data/third_party/boringssl-with-bazel/ssl/handshake.cc +63 -30
  945. data/third_party/boringssl-with-bazel/ssl/handshake_client.cc +129 -85
  946. data/third_party/boringssl-with-bazel/ssl/handshake_server.cc +116 -68
  947. data/third_party/boringssl-with-bazel/ssl/internal.h +983 -1207
  948. data/third_party/boringssl-with-bazel/ssl/s3_both.cc +34 -29
  949. data/third_party/boringssl-with-bazel/ssl/s3_lib.cc +4 -3
  950. data/third_party/boringssl-with-bazel/ssl/s3_pkt.cc +12 -12
  951. data/third_party/boringssl-with-bazel/ssl/ssl_aead_ctx.cc +5 -5
  952. data/third_party/boringssl-with-bazel/ssl/ssl_asn1.cc +114 -59
  953. data/third_party/boringssl-with-bazel/ssl/ssl_buffer.cc +17 -18
  954. data/third_party/boringssl-with-bazel/ssl/ssl_cert.cc +99 -61
  955. data/third_party/boringssl-with-bazel/ssl/ssl_cipher.cc +143 -134
  956. data/third_party/boringssl-with-bazel/ssl/ssl_credential.cc +188 -90
  957. data/third_party/boringssl-with-bazel/ssl/ssl_file.cc +132 -225
  958. data/third_party/boringssl-with-bazel/ssl/ssl_key_share.cc +79 -7
  959. data/third_party/boringssl-with-bazel/ssl/ssl_lib.cc +698 -302
  960. data/third_party/boringssl-with-bazel/ssl/ssl_privkey.cc +102 -45
  961. data/third_party/boringssl-with-bazel/ssl/ssl_session.cc +117 -102
  962. data/third_party/boringssl-with-bazel/ssl/ssl_transcript.cc +3 -3
  963. data/third_party/boringssl-with-bazel/ssl/ssl_versions.cc +24 -24
  964. data/third_party/boringssl-with-bazel/ssl/ssl_x509.cc +184 -170
  965. data/third_party/boringssl-with-bazel/ssl/t1_enc.cc +12 -10
  966. data/third_party/boringssl-with-bazel/ssl/tls13_both.cc +86 -54
  967. data/third_party/boringssl-with-bazel/ssl/tls13_client.cc +176 -90
  968. data/third_party/boringssl-with-bazel/ssl/tls13_enc.cc +166 -112
  969. data/third_party/boringssl-with-bazel/ssl/tls13_server.cc +188 -97
  970. data/third_party/boringssl-with-bazel/ssl/tls_method.cc +23 -23
  971. data/third_party/boringssl-with-bazel/ssl/tls_record.cc +17 -14
  972. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
  973. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
  974. data/third_party/boringssl-with-bazel/third_party/fiat/curve25519_64_adx.h +37 -33
  975. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64.h +4 -93
  976. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64_msvc.h +4 -69
  977. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_32.br.c.inc +71 -0
  978. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_64.br.c.inc +84 -0
  979. data/third_party/boringssl-with-bazel/third_party/fiat/p256_point.br.c.inc +166 -0
  980. metadata +77 -52
  981. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +0 -240
  982. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +0 -56
  983. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +0 -157
  984. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +0 -72
  985. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +0 -181
  986. data/third_party/abseil-cpp/absl/base/internal/identity.h +0 -39
  987. data/third_party/abseil-cpp/absl/base/internal/nullability_deprecated.h +0 -106
  988. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -105
  989. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -50
  990. data/third_party/abseil-cpp/absl/strings/string_view.cc +0 -257
  991. data/third_party/boringssl-with-bazel/crypto/evp/p_dh_asn1.cc +0 -142
  992. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa_asn1.cc +0 -279
  993. data/third_party/boringssl-with-bazel/crypto/evp/p_ec_asn1.cc +0 -286
  994. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519_asn1.cc +0 -225
  995. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa_asn1.cc +0 -198
  996. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519_asn1.cc +0 -237
  997. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p224-64.cc.inc +0 -1163
  998. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.cc.inc +0 -741
  999. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.h +0 -207
  1000. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/blinding.cc.inc +0 -147
  1001. data/third_party/boringssl-with-bazel/crypto/rand/getrandom_fillin.h +0 -64
  1002. data/third_party/boringssl-with-bazel/crypto/rand/passive.cc +0 -178
  1003. data/third_party/boringssl-with-bazel/crypto/x509/ext_dat.h +0 -92
  1004. data/third_party/boringssl-with-bazel/include/openssl/bcm_public.h +0 -82
  1005. 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
  }