grpc 1.84.0 → 1.85.0.pre1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1004) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +40 -27
  3. data/include/grpc/event_engine/memory_allocator.h +1 -0
  4. data/include/grpc/grpc.h +3 -0
  5. data/include/grpc/grpc_security_constants.h +2 -0
  6. data/include/grpc/impl/channel_arg_names.h +4 -0
  7. data/src/core/call/call_filters.h +10 -10
  8. data/src/core/{lib/security/authorization → call}/evaluate_args.cc +22 -1
  9. data/src/core/{lib/security/authorization → call}/evaluate_args.h +19 -5
  10. data/src/core/call/filter_fusion.h +15 -15
  11. data/src/core/call/interception_chain.h +3 -3
  12. data/src/core/call/metadata_batch.cc +1 -0
  13. data/src/core/call/metadata_batch.h +45 -33
  14. data/src/core/call/parsed_metadata.h +3 -3
  15. data/src/core/call/request_buffer.cc +6 -6
  16. data/src/core/call/request_buffer.h +1 -1
  17. data/src/core/channelz/channel_trace.cc +5 -5
  18. data/src/core/channelz/channel_trace.h +1 -1
  19. data/src/core/channelz/channelz.cc +9 -9
  20. data/src/core/channelz/channelz.h +12 -12
  21. data/src/core/channelz/channelz_registry.cc +10 -10
  22. data/src/core/channelz/ztrace_collector.h +5 -5
  23. data/src/core/client_channel/client_channel.cc +4 -4
  24. data/src/core/client_channel/client_channel_filter.cc +14 -14
  25. data/src/core/client_channel/global_subchannel_pool.cc +4 -4
  26. data/src/core/client_channel/subchannel.cc +24 -23
  27. data/src/core/client_channel/subchannel_stream_client.cc +5 -5
  28. data/src/core/credentials/call/external/aws_external_account_credentials.cc +7 -7
  29. data/src/core/credentials/call/external/aws_request_signer.cc +16 -0
  30. data/src/core/credentials/call/external/external_account_credentials.cc +4 -4
  31. data/src/core/credentials/call/regional_access_boundary_fetcher.cc +9 -9
  32. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +4 -4
  33. data/src/core/credentials/transport/google_default/google_default_credentials.cc +3 -3
  34. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +1 -1
  35. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +9 -9
  36. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +1 -1
  37. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +6 -6
  38. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +3 -3
  39. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +4 -4
  40. data/src/core/credentials/transport/tls/ssl_utils.cc +10 -0
  41. data/src/core/credentials/transport/tls/tls_security_connector.cc +10 -10
  42. data/src/core/credentials/transport/tls/tls_security_connector.h +6 -6
  43. data/src/core/credentials/transport/tls/tls_utils.h +9 -0
  44. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +1 -1
  45. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
  46. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
  47. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +1 -1
  48. data/src/core/ext/filters/http/message_compress/compression_filter.cc +15 -0
  49. data/src/core/ext/filters/rbac/rbac_filter.h +1 -1
  50. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +5 -5
  51. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +30 -21
  52. data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -11
  53. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +14 -11
  54. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
  55. data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -4
  56. data/src/core/ext/transport/chttp2/transport/frame.h +9 -0
  57. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -9
  58. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -2
  59. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +16 -18
  60. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +2 -1
  61. data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +277 -189
  62. data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +40 -17
  63. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +12 -24
  64. data/src/core/ext/transport/chttp2/transport/http2_transport.h +3 -29
  65. data/src/core/ext/transport/chttp2/transport/internal.h +2 -2
  66. data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
  67. data/src/core/ext/transport/chttp2/transport/read_context.h +96 -3
  68. data/src/core/ext/transport/chttp2/transport/reclaimer.cc +32 -0
  69. data/src/core/ext/transport/chttp2/transport/reclaimer.h +64 -0
  70. data/src/core/ext/transport/chttp2/transport/security_frame.h +8 -8
  71. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +17 -9
  72. data/src/core/ext/transport/chttp2/transport/write_cycle.h +23 -3
  73. data/src/core/ext/transport/inproc/inproc_transport.cc +5 -5
  74. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb.h +137 -73
  75. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb_minitable.c +45 -25
  76. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb.h +6 -6
  77. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.c +4 -4
  78. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.h +5 -5
  79. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb.h +46 -26
  80. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.c +17 -14
  81. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.h +5 -5
  82. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb.h +5 -5
  83. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.c +3 -3
  84. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.h +5 -5
  85. data/src/core/ext/upb-gen/grpc/health/v1/health.upb.h +329 -0
  86. data/src/core/ext/upb-gen/grpc/health/v1/health.upb_minitable.c +128 -0
  87. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/health/v1/health.upb_minitable.h +8 -5
  88. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb.h +5 -5
  89. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.c +3 -3
  90. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.h +5 -5
  91. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb.h +185 -23
  92. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.c +20 -12
  93. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.h +5 -5
  94. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb.h +58 -42
  95. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.c +17 -12
  96. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.h +5 -5
  97. data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +567 -549
  98. data/src/core/ext/upbdefs-gen/grpc/lookup/v1/rls_config.upbdefs.c +182 -0
  99. data/src/core/ext/upbdefs-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upbdefs.h +14 -14
  100. data/src/core/filter/ext_proc/ext_proc_filter.cc +1603 -46
  101. data/src/core/filter/ext_proc/ext_proc_filter.h +55 -22
  102. data/src/core/filter/ext_proc/ext_proc_messages.cc +106 -51
  103. data/src/core/filter/ext_proc/ext_proc_messages.h +36 -9
  104. data/src/core/handshaker/handshaker.cc +4 -4
  105. data/src/core/handshaker/http_connect/http_connect_client_handshaker.cc +3 -3
  106. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +10 -10
  107. data/src/core/handshaker/security/secure_endpoint.cc +13 -13
  108. data/src/core/handshaker/security/security_handshaker.cc +6 -6
  109. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +4 -4
  110. data/src/core/lib/channel/channel_args.cc +20 -0
  111. data/src/core/lib/channel/channel_args.h +17 -17
  112. data/src/core/lib/channel/promise_based_filter.cc +2 -2
  113. data/src/core/lib/channel/promise_based_filter.h +66 -27
  114. data/src/core/lib/debug/trace_flags.cc +2 -0
  115. data/src/core/lib/debug/trace_flags.h +1 -0
  116. data/src/core/lib/event_engine/ares_resolver.cc +14 -14
  117. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +7 -7
  118. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +4 -4
  119. data/src/core/lib/event_engine/default_event_engine.cc +5 -5
  120. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +9 -9
  121. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +16 -14
  122. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +6 -6
  123. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +3 -3
  124. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1 -1
  125. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +7 -7
  126. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +17 -17
  127. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +3 -3
  128. data/src/core/lib/event_engine/posix_engine/timer.cc +5 -5
  129. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +5 -5
  130. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +3 -3
  131. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +1 -1
  132. data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
  133. data/src/core/lib/event_engine/thread_pool/thread_count.h +3 -3
  134. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +50 -21
  135. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +3 -3
  136. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +3 -3
  137. data/src/core/lib/event_engine/windows/windows_engine.cc +15 -15
  138. data/src/core/lib/event_engine/windows/windows_listener.cc +6 -6
  139. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +6 -6
  140. data/src/core/lib/experiments/experiments.cc +48 -0
  141. data/src/core/lib/experiments/experiments.h +24 -0
  142. data/src/core/lib/iomgr/buffer_list.cc +3 -3
  143. data/src/core/lib/iomgr/buffer_list.h +1 -1
  144. data/src/core/lib/iomgr/combiner.cc +0 -1
  145. data/src/core/lib/iomgr/ev_apple.cc +4 -4
  146. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
  147. data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
  148. data/src/core/lib/iomgr/tcp_posix.cc +7 -7
  149. data/src/core/lib/promise/activity.cc +1 -1
  150. data/src/core/lib/promise/activity.h +1 -1
  151. data/src/core/lib/promise/arena_promise.h +7 -7
  152. data/src/core/lib/promise/detail/promise_factory.h +8 -8
  153. data/src/core/lib/promise/detail/promise_like.h +4 -4
  154. data/src/core/lib/promise/inter_activity_latch.h +6 -6
  155. data/src/core/lib/promise/inter_activity_pipe.h +1 -1
  156. data/src/core/lib/promise/observable.h +3 -3
  157. data/src/core/lib/promise/party.cc +1 -1
  158. data/src/core/lib/promise/try_seq.h +2 -2
  159. data/src/core/lib/resource_quota/arena.h +3 -3
  160. data/src/core/lib/resource_quota/memory_quota.cc +16 -16
  161. data/src/core/lib/resource_quota/memory_quota.h +1 -1
  162. data/src/core/lib/resource_quota/thread_quota.cc +3 -3
  163. data/src/core/lib/security/authorization/audit_logging.cc +5 -5
  164. data/src/core/lib/security/authorization/authorization_engine.h +1 -1
  165. data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -1
  166. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
  167. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  168. data/src/core/lib/security/authorization/matchers.h +1 -1
  169. data/src/core/lib/surface/call.cc +8 -7
  170. data/src/core/lib/surface/call.h +3 -3
  171. data/src/core/lib/surface/call_utils.h +4 -0
  172. data/src/core/lib/surface/channel.cc +1 -1
  173. data/src/core/lib/surface/channel.h +1 -1
  174. data/src/core/lib/surface/channel_init.cc +1 -1
  175. data/src/core/lib/surface/init.cc +7 -7
  176. data/src/core/lib/surface/lame_client.cc +1 -1
  177. data/src/core/lib/surface/legacy_channel.cc +2 -2
  178. data/src/core/lib/surface/version.cc +1 -1
  179. data/src/core/lib/transport/transport_framing_endpoint_extension.h +3 -3
  180. data/src/core/load_balancing/autosharding/autosharding.cc +931 -0
  181. data/src/core/load_balancing/autosharding/autosharding.h +78 -0
  182. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -2
  183. data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
  184. data/src/core/load_balancing/grpclb/load_balancer_api.h +3 -1
  185. data/src/core/load_balancing/health_check_client.cc +7 -7
  186. data/src/core/load_balancing/lb_policy.cc +1 -1
  187. data/src/core/load_balancing/oob_backend_metric.cc +5 -5
  188. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
  189. data/src/core/load_balancing/ring_hash/ring_hash.cc +109 -37
  190. data/src/core/load_balancing/rls/rls.cc +23 -17
  191. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +10 -10
  192. data/src/core/load_balancing/xds/cds.cc +6 -5
  193. data/src/core/load_balancing/xds/xds_cluster_impl.cc +2 -2
  194. data/src/core/load_balancing/xds/xds_override_host.cc +10 -10
  195. data/src/core/mitigation_engine/mitigation_engine.h +28 -4
  196. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -0
  197. data/src/core/resolver/dns/dns_resolver.cc +7 -7
  198. data/src/core/resolver/fake/fake_resolver.cc +5 -5
  199. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +38 -30
  200. data/src/core/server/server.cc +30 -30
  201. data/src/core/server/server.h +4 -3
  202. data/src/core/server/server_config_selector_filter.cc +3 -3
  203. data/src/core/server/xds_server_config_fetcher_legacy.cc +15 -15
  204. data/src/core/telemetry/default_tcp_tracer.cc +1 -1
  205. data/src/core/telemetry/instrument.cc +30 -16
  206. data/src/core/telemetry/instrument.h +3 -3
  207. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
  208. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -4
  209. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +2 -2
  210. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  211. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -1
  212. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +5 -5
  213. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +3 -3
  214. data/src/core/tsi/ssl_transport_security.cc +46 -13
  215. data/src/core/tsi/ssl_transport_security.h +7 -0
  216. data/src/core/tsi/ssl_transport_security_utils.cc +16 -6
  217. data/src/core/util/event_log.cc +3 -3
  218. data/src/core/util/http_client/httpcli.cc +5 -5
  219. data/src/core/util/http_client/httpcli.h +1 -1
  220. data/src/core/util/json/json_object_loader.cc +7 -0
  221. data/src/core/util/json/json_object_loader.h +17 -2
  222. data/src/core/util/latent_see.cc +123 -36
  223. data/src/core/util/latent_see.h +14 -1
  224. data/src/core/util/mpscq.cc +1 -1
  225. data/src/core/util/notification.h +4 -4
  226. data/src/core/util/sync.h +20 -6
  227. data/src/core/util/table.h +20 -22
  228. data/src/core/util/work_serializer.cc +2 -2
  229. data/src/core/xds/grpc/blackboard.cc +4 -3
  230. data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
  231. data/src/core/xds/grpc/streaming_call_promise_wrapper.cc +181 -0
  232. data/src/core/xds/grpc/streaming_call_promise_wrapper.h +213 -0
  233. data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +2 -2
  234. data/src/core/xds/grpc/xds_client_grpc.cc +8 -8
  235. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
  236. data/src/core/xds/grpc/xds_endpoint.cc +1 -1
  237. data/src/core/xds/grpc/xds_endpoint_parser.cc +11 -0
  238. data/src/core/xds/grpc/xds_grpc_service_parser.cc +12 -10
  239. data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +17 -14
  240. data/src/core/xds/grpc/xds_matcher.h +2 -2
  241. data/src/core/xds/grpc/xds_transport_grpc.cc +125 -85
  242. data/src/core/xds/grpc/xds_transport_grpc.h +19 -4
  243. data/src/core/xds/xds_client/lrs_client.cc +22 -19
  244. data/src/core/xds/xds_client/xds_client.cc +19 -16
  245. data/src/core/xds/xds_client/xds_transport.h +49 -3
  246. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  247. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
  248. data/src/ruby/lib/grpc/version.rb +1 -1
  249. data/src/ruby/pb/README.md +1 -1
  250. data/src/ruby/pb/generate_proto_ruby.sh +1 -1
  251. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +34 -2
  252. data/third_party/abseil-cpp/absl/algorithm/container.h +345 -147
  253. data/third_party/abseil-cpp/absl/base/attributes.h +67 -44
  254. data/third_party/abseil-cpp/absl/base/call_once.h +1 -0
  255. data/third_party/abseil-cpp/absl/base/casts.cc +61 -0
  256. data/third_party/abseil-cpp/absl/base/casts.h +135 -2
  257. data/third_party/abseil-cpp/absl/base/config.h +63 -41
  258. data/third_party/abseil-cpp/absl/base/fast_type_id.h +30 -2
  259. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
  260. data/third_party/abseil-cpp/absl/base/internal/hardening.h +136 -0
  261. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +6 -2
  262. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -4
  263. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
  264. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
  265. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
  266. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +26 -24
  267. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +74 -29
  268. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -11
  269. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
  270. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +5 -1
  271. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
  272. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
  273. data/third_party/abseil-cpp/absl/base/macros.h +76 -37
  274. data/third_party/abseil-cpp/absl/base/nullability.h +5 -5
  275. data/third_party/abseil-cpp/absl/base/optimization.h +4 -5
  276. data/third_party/abseil-cpp/absl/base/options.h +46 -18
  277. data/third_party/abseil-cpp/absl/base/policy_checks.h +5 -5
  278. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
  279. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
  280. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +7 -2
  281. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
  282. data/third_party/abseil-cpp/absl/container/btree_map.h +60 -10
  283. data/third_party/abseil-cpp/absl/container/btree_set.h +61 -15
  284. data/third_party/abseil-cpp/absl/container/fixed_array.h +19 -21
  285. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +49 -27
  286. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +50 -26
  287. data/third_party/abseil-cpp/absl/container/inlined_vector.h +42 -36
  288. data/third_party/abseil-cpp/absl/container/internal/btree.h +32 -24
  289. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +30 -22
  290. data/third_party/abseil-cpp/absl/container/internal/common.h +57 -5
  291. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
  292. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +40 -36
  293. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +119 -39
  294. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +14 -2
  295. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +14 -22
  296. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +52 -52
  297. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +7 -7
  298. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +7 -7
  299. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +32 -40
  300. data/third_party/abseil-cpp/absl/container/internal/layout.h +13 -13
  301. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +95 -72
  302. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +633 -365
  303. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1016 -749
  304. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +0 -1
  305. data/third_party/abseil-cpp/absl/container/node_hash_map.h +58 -35
  306. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +23 -6
  307. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
  308. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -6
  309. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
  310. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
  311. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
  312. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +304 -188
  313. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
  314. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
  315. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
  316. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
  317. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc +15 -1
  318. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -1
  319. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +12 -1
  320. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
  321. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -11
  322. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
  323. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
  324. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +6 -1
  325. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +14 -8
  326. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +48 -38
  327. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
  328. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +63 -118
  329. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +7 -47
  330. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +20 -2
  331. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +83 -149
  332. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
  333. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
  334. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
  335. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +8 -6
  336. data/third_party/abseil-cpp/absl/flags/declare.h +9 -0
  337. data/third_party/abseil-cpp/absl/flags/flag.h +2 -1
  338. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
  339. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +19 -18
  340. data/third_party/abseil-cpp/absl/flags/internal/flag.h +33 -34
  341. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
  342. data/third_party/abseil-cpp/absl/flags/marshalling.cc +1 -16
  343. data/third_party/abseil-cpp/absl/flags/marshalling.h +2 -28
  344. data/third_party/abseil-cpp/absl/flags/reflection.cc +11 -7
  345. data/third_party/abseil-cpp/absl/flags/usage_config.cc +2 -2
  346. data/third_party/abseil-cpp/absl/functional/any_invocable.h +22 -19
  347. data/third_party/abseil-cpp/absl/functional/bind_front.h +7 -1
  348. data/third_party/abseil-cpp/absl/functional/function_ref.h +125 -20
  349. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +43 -31
  350. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
  351. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +44 -6
  352. data/third_party/abseil-cpp/absl/hash/hash.h +1 -1
  353. data/third_party/abseil-cpp/absl/hash/internal/city.cc +39 -51
  354. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +379 -14
  355. data/third_party/abseil-cpp/absl/hash/internal/hash.h +457 -353
  356. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
  357. data/third_party/abseil-cpp/absl/log/internal/check_impl.h +2 -1
  358. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +4 -0
  359. data/third_party/abseil-cpp/absl/log/internal/check_op.h +128 -50
  360. data/third_party/abseil-cpp/absl/log/internal/conditions.h +38 -35
  361. data/third_party/abseil-cpp/absl/log/internal/log_impl.h +108 -110
  362. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +10 -6
  363. data/third_party/abseil-cpp/absl/log/internal/log_message.h +19 -1
  364. data/third_party/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
  365. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -1
  366. data/third_party/abseil-cpp/absl/log/internal/proto.cc +13 -0
  367. data/third_party/abseil-cpp/absl/log/internal/strip.h +30 -31
  368. data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
  369. data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
  370. data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +30 -30
  371. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
  372. data/third_party/abseil-cpp/absl/log/log.h +2 -2
  373. data/third_party/abseil-cpp/absl/log/log_entry.cc +263 -0
  374. data/third_party/abseil-cpp/absl/log/log_entry.h +2 -0
  375. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +0 -2
  376. data/third_party/abseil-cpp/absl/memory/memory.h +55 -5
  377. data/third_party/abseil-cpp/absl/meta/type_traits.h +161 -56
  378. data/third_party/abseil-cpp/absl/numeric/int128.h +41 -21
  379. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
  380. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
  381. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +32 -4
  382. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
  383. data/third_party/abseil-cpp/absl/random/beta_distribution.h +2 -2
  384. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
  385. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +1 -1
  386. data/third_party/abseil-cpp/absl/random/distributions.h +17 -17
  387. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -1
  388. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
  389. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.cc +2 -2
  390. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
  391. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
  392. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
  393. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
  394. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
  395. data/third_party/abseil-cpp/absl/random/internal/platform.h +0 -13
  396. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
  397. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
  398. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
  399. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +5 -31
  400. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +2 -1
  401. data/third_party/abseil-cpp/absl/random/internal/traits.h +21 -0
  402. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
  403. data/third_party/abseil-cpp/absl/random/mocking_access.h +74 -0
  404. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  405. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
  406. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +30 -4
  407. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +225 -63
  408. data/third_party/abseil-cpp/absl/status/status.cc +66 -70
  409. data/third_party/abseil-cpp/absl/status/status.h +254 -23
  410. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +3 -2
  411. data/third_party/abseil-cpp/absl/status/statusor.h +117 -137
  412. data/third_party/abseil-cpp/absl/strings/ascii.h +10 -6
  413. data/third_party/abseil-cpp/absl/strings/cord.cc +41 -17
  414. data/third_party/abseil-cpp/absl/strings/cord.h +26 -17
  415. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +4 -2
  416. data/third_party/abseil-cpp/absl/strings/escaping.cc +305 -125
  417. data/third_party/abseil-cpp/absl/strings/escaping.h +12 -2
  418. data/third_party/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
  419. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +2 -2
  420. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
  421. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +27 -21
  422. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +11 -19
  423. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
  424. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
  425. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
  426. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +2 -24
  427. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -36
  428. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
  429. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
  430. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
  431. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
  432. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +921 -231
  433. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -16
  434. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +16 -12
  435. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
  436. data/third_party/abseil-cpp/absl/strings/numbers.cc +477 -8
  437. data/third_party/abseil-cpp/absl/strings/numbers.h +29 -12
  438. data/third_party/abseil-cpp/absl/strings/resize_and_overwrite.h +198 -0
  439. data/third_party/abseil-cpp/absl/strings/str_cat.cc +96 -91
  440. data/third_party/abseil-cpp/absl/strings/str_cat.h +53 -13
  441. data/third_party/abseil-cpp/absl/strings/str_split.h +14 -9
  442. data/third_party/abseil-cpp/absl/strings/string_view.h +10 -716
  443. data/third_party/abseil-cpp/absl/strings/substitute.cc +24 -24
  444. data/third_party/abseil-cpp/absl/strings/substitute.h +2 -2
  445. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +1 -1
  446. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
  447. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +24 -3
  448. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
  449. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
  450. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
  451. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +41 -29
  452. data/third_party/abseil-cpp/absl/synchronization/mutex.h +199 -94
  453. data/third_party/abseil-cpp/absl/synchronization/notification.cc +5 -5
  454. data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
  455. data/third_party/abseil-cpp/absl/time/clock.cc +29 -30
  456. data/third_party/abseil-cpp/absl/time/clock.h +3 -0
  457. data/third_party/abseil-cpp/absl/time/duration.cc +2 -2
  458. data/third_party/abseil-cpp/absl/time/format.cc +3 -10
  459. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
  460. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +131 -91
  461. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
  462. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +185 -0
  463. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
  464. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
  465. data/third_party/abseil-cpp/absl/time/time.cc +4 -4
  466. data/third_party/abseil-cpp/absl/time/time.h +14 -13
  467. data/third_party/abseil-cpp/absl/types/compare.h +64 -63
  468. data/third_party/abseil-cpp/absl/types/internal/span.h +6 -6
  469. data/third_party/abseil-cpp/absl/types/optional.h +31 -4
  470. data/third_party/abseil-cpp/absl/types/optional_ref.h +295 -0
  471. data/third_party/{boringssl-with-bazel/crypto/x509/x_val.cc → abseil-cpp/absl/types/source_location.cc} +4 -14
  472. data/third_party/abseil-cpp/absl/types/source_location.h +172 -0
  473. data/third_party/abseil-cpp/absl/types/span.h +67 -38
  474. data/third_party/abseil-cpp/absl/types/variant.h +75 -18
  475. data/third_party/abseil-cpp/absl/utility/utility.h +112 -16
  476. data/third_party/boringssl-with-bazel/crypto/aes/aes.cc +3 -0
  477. data/third_party/boringssl-with-bazel/crypto/armv8_feature_parsing.h +67 -0
  478. data/third_party/boringssl-with-bazel/crypto/asn1/a_bitstr.cc +143 -105
  479. data/third_party/boringssl-with-bazel/crypto/asn1/a_bool.cc +5 -8
  480. data/third_party/boringssl-with-bazel/crypto/asn1/a_d2i_fp.cc +3 -3
  481. data/third_party/boringssl-with-bazel/crypto/asn1/a_dup.cc +6 -6
  482. data/third_party/boringssl-with-bazel/crypto/asn1/a_gentm.cc +33 -12
  483. data/third_party/boringssl-with-bazel/crypto/asn1/a_i2d_fp.cc +7 -6
  484. data/third_party/boringssl-with-bazel/crypto/asn1/a_int.cc +80 -52
  485. data/third_party/boringssl-with-bazel/crypto/asn1/a_mbstr.cc +7 -4
  486. data/third_party/boringssl-with-bazel/crypto/asn1/a_object.cc +70 -72
  487. data/third_party/boringssl-with-bazel/crypto/asn1/a_strex.cc +38 -42
  488. data/third_party/boringssl-with-bazel/crypto/asn1/a_strnid.cc +41 -39
  489. data/third_party/boringssl-with-bazel/crypto/asn1/a_time.cc +59 -35
  490. data/third_party/boringssl-with-bazel/crypto/asn1/a_type.cc +275 -15
  491. data/third_party/boringssl-with-bazel/crypto/asn1/a_utctm.cc +32 -13
  492. data/third_party/boringssl-with-bazel/crypto/asn1/asn1_lib.cc +128 -30
  493. data/third_party/boringssl-with-bazel/crypto/asn1/asn_pack.cc +10 -10
  494. data/third_party/boringssl-with-bazel/crypto/asn1/f_int.cc +1 -1
  495. data/third_party/boringssl-with-bazel/crypto/asn1/f_string.cc +1 -1
  496. data/third_party/boringssl-with-bazel/crypto/asn1/internal.h +261 -115
  497. data/third_party/boringssl-with-bazel/crypto/asn1/posix_time.cc +8 -5
  498. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_dec.cc +373 -725
  499. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_enc.cc +211 -526
  500. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_fre.cc +22 -19
  501. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_new.cc +26 -24
  502. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_typ.cc +19 -5
  503. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_utl.cc +47 -51
  504. data/third_party/boringssl-with-bazel/crypto/base64/base64.cc +14 -15
  505. data/third_party/boringssl-with-bazel/crypto/bcm_support.h +7 -29
  506. data/third_party/boringssl-with-bazel/crypto/bio/bio.cc +234 -176
  507. data/third_party/boringssl-with-bazel/crypto/bio/bio_mem.cc +72 -86
  508. data/third_party/boringssl-with-bazel/crypto/bio/connect.cc +153 -199
  509. data/third_party/boringssl-with-bazel/crypto/bio/errno.cc +3 -1
  510. data/third_party/boringssl-with-bazel/crypto/bio/fd.cc +56 -55
  511. data/third_party/boringssl-with-bazel/crypto/bio/file.cc +70 -78
  512. data/third_party/boringssl-with-bazel/crypto/bio/hexdump.cc +6 -4
  513. data/third_party/boringssl-with-bazel/crypto/bio/internal.h +69 -17
  514. data/third_party/boringssl-with-bazel/crypto/bio/pair.cc +117 -136
  515. data/third_party/boringssl-with-bazel/crypto/bio/printf.cc +1 -1
  516. data/third_party/boringssl-with-bazel/crypto/bio/socket.cc +116 -50
  517. data/third_party/boringssl-with-bazel/crypto/bio/socket_helper.cc +53 -5
  518. data/third_party/boringssl-with-bazel/crypto/blake2/blake2.cc +9 -5
  519. data/third_party/boringssl-with-bazel/crypto/bn/bn_asn1.cc +2 -2
  520. data/third_party/boringssl-with-bazel/crypto/bn/convert.cc +56 -70
  521. data/third_party/boringssl-with-bazel/crypto/bn/div.cc +102 -0
  522. data/third_party/boringssl-with-bazel/crypto/bn/exponentiation.cc +26 -42
  523. data/third_party/boringssl-with-bazel/crypto/bn/sqrt.cc +93 -0
  524. data/third_party/boringssl-with-bazel/crypto/buf/buf.cc +6 -5
  525. data/third_party/boringssl-with-bazel/crypto/bytestring/asn1_compat.cc +6 -5
  526. data/third_party/boringssl-with-bazel/crypto/bytestring/ber.cc +22 -20
  527. data/third_party/boringssl-with-bazel/crypto/bytestring/cbb.cc +119 -59
  528. data/third_party/boringssl-with-bazel/crypto/bytestring/cbs.cc +115 -31
  529. data/third_party/boringssl-with-bazel/crypto/bytestring/internal.h +79 -24
  530. data/third_party/boringssl-with-bazel/crypto/bytestring/unicode.cc +2 -2
  531. data/third_party/boringssl-with-bazel/crypto/chacha/chacha.cc +5 -3
  532. data/third_party/boringssl-with-bazel/crypto/chacha/internal.h +23 -22
  533. data/third_party/boringssl-with-bazel/crypto/cipher/derive_key.cc +14 -18
  534. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesctrhmac.cc +73 -58
  535. data/third_party/boringssl-with-bazel/crypto/cipher/e_aeseax.cc +132 -70
  536. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesgcmsiv.cc +390 -249
  537. data/third_party/boringssl-with-bazel/crypto/cipher/e_chacha20poly1305.cc +200 -137
  538. data/third_party/boringssl-with-bazel/crypto/cipher/e_des.cc +45 -29
  539. data/third_party/boringssl-with-bazel/crypto/cipher/e_null.cc +9 -5
  540. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc2.cc +43 -28
  541. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc4.cc +7 -5
  542. data/third_party/boringssl-with-bazel/crypto/cipher/e_tls.cc +250 -237
  543. data/third_party/boringssl-with-bazel/crypto/cipher/get_cipher.cc +12 -12
  544. data/third_party/boringssl-with-bazel/crypto/cipher/internal.h +59 -59
  545. data/third_party/boringssl-with-bazel/crypto/cipher/tls_cbc.cc +111 -111
  546. data/third_party/boringssl-with-bazel/crypto/cms/cms.cc +48 -42
  547. data/third_party/boringssl-with-bazel/crypto/conf/conf.cc +69 -63
  548. data/third_party/boringssl-with-bazel/crypto/conf/internal.h +11 -12
  549. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_apple.cc +8 -5
  550. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_fuchsia.cc +6 -1
  551. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_linux.cc +7 -1
  552. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_openbsd.cc +7 -21
  553. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_sysreg.cc +15 -41
  554. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_win.cc +16 -3
  555. data/third_party/boringssl-with-bazel/crypto/cpu_arm_freebsd.cc +4 -2
  556. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.cc +54 -31
  557. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.h +79 -101
  558. data/third_party/boringssl-with-bazel/crypto/cpu_intel.cc +51 -45
  559. data/third_party/boringssl-with-bazel/crypto/crypto.cc +26 -55
  560. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519.cc +28 -25
  561. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519_tables.h +6 -6
  562. data/third_party/boringssl-with-bazel/crypto/curve25519/internal.h +14 -15
  563. data/third_party/boringssl-with-bazel/crypto/curve25519/spake25519.cc +23 -20
  564. data/third_party/boringssl-with-bazel/crypto/des/des.cc +27 -19
  565. data/third_party/boringssl-with-bazel/crypto/des/internal.h +4 -9
  566. data/third_party/boringssl-with-bazel/crypto/dh/dh_asn1.cc +34 -49
  567. data/third_party/boringssl-with-bazel/crypto/dh/params.cc +44 -41
  568. data/third_party/boringssl-with-bazel/crypto/digest/digest_extra.cc +87 -40
  569. data/third_party/boringssl-with-bazel/crypto/dsa/dsa.cc +237 -260
  570. data/third_party/boringssl-with-bazel/crypto/dsa/dsa_asn1.cc +100 -173
  571. data/third_party/boringssl-with-bazel/crypto/dsa/internal.h +23 -21
  572. data/third_party/boringssl-with-bazel/crypto/ec/ec_asn1.cc +181 -209
  573. data/third_party/boringssl-with-bazel/crypto/ec/ec_derive.cc +26 -28
  574. data/third_party/boringssl-with-bazel/crypto/ec/hash_to_curve.cc +265 -174
  575. data/third_party/boringssl-with-bazel/crypto/ec/internal.h +54 -18
  576. data/third_party/boringssl-with-bazel/crypto/ecdh/ecdh.cc +7 -5
  577. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_asn1.cc +50 -70
  578. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_p1363.cc +54 -0
  579. data/third_party/boringssl-with-bazel/crypto/engine/engine.cc +7 -7
  580. data/third_party/boringssl-with-bazel/crypto/err/err.cc +116 -105
  581. data/third_party/boringssl-with-bazel/crypto/err/internal.h +8 -21
  582. data/third_party/boringssl-with-bazel/crypto/evp/evp.cc +238 -166
  583. data/third_party/boringssl-with-bazel/crypto/evp/evp_asn1.cc +202 -234
  584. data/third_party/boringssl-with-bazel/crypto/evp/evp_ctx.cc +260 -159
  585. data/third_party/boringssl-with-bazel/crypto/evp/evp_kem.cc +82 -0
  586. data/third_party/boringssl-with-bazel/crypto/evp/internal.h +292 -137
  587. data/third_party/boringssl-with-bazel/crypto/evp/p_dh.cc +198 -25
  588. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa.cc +333 -0
  589. data/third_party/boringssl-with-bazel/crypto/evp/p_ec.cc +427 -42
  590. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519.cc +270 -14
  591. data/third_party/boringssl-with-bazel/crypto/evp/p_hkdf.cc +70 -102
  592. data/third_party/boringssl-with-bazel/crypto/evp/p_mldsa.cc +549 -0
  593. data/third_party/boringssl-with-bazel/crypto/evp/p_mlkem.cc +485 -0
  594. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa.cc +666 -158
  595. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519.cc +290 -28
  596. data/third_party/boringssl-with-bazel/crypto/evp/p_xwing.cc +273 -0
  597. data/third_party/boringssl-with-bazel/crypto/evp/pbkdf.cc +14 -7
  598. data/third_party/boringssl-with-bazel/crypto/evp/print.cc +34 -89
  599. data/third_party/boringssl-with-bazel/crypto/evp/scrypt.cc +23 -21
  600. data/third_party/boringssl-with-bazel/crypto/evp/sign.cc +23 -42
  601. data/third_party/boringssl-with-bazel/crypto/ex_data.cc +40 -41
  602. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes.cc.inc +34 -28
  603. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes_nohw.cc.inc +119 -121
  604. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cbc.cc.inc +16 -14
  605. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cfb.cc.inc +12 -10
  606. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ctr.cc.inc +7 -5
  607. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm.cc.inc +39 -29
  608. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm_nohw.cc.inc +15 -13
  609. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/internal.h +193 -177
  610. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/key_wrap.cc.inc +5 -3
  611. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/mode_wrappers.cc.inc +7 -3
  612. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ofb.cc.inc +7 -5
  613. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm.cc +24 -19
  614. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm_interface.h +512 -384
  615. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/add.cc.inc +7 -5
  616. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +63 -44
  617. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bn.cc.inc +40 -37
  618. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bytes.cc.inc +27 -22
  619. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/cmp.cc.inc +9 -7
  620. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/ctx.cc.inc +62 -126
  621. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div.cc.inc +92 -167
  622. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div_extra.cc.inc +15 -12
  623. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/exponentiation.cc.inc +96 -93
  624. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd.cc.inc +73 -92
  625. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd_extra.cc.inc +59 -71
  626. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/generic.cc.inc +54 -57
  627. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/internal.h +333 -255
  628. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/jacobi.cc.inc +12 -19
  629. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery.cc.inc +80 -95
  630. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery_inv.cc.inc +53 -96
  631. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/mul.cc.inc +58 -419
  632. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/prime.cc.inc +164 -213
  633. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/random.cc.inc +27 -26
  634. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.cc.inc +12 -10
  635. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.h +47 -49
  636. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/shift.cc.inc +14 -17
  637. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/sqrt.cc.inc +19 -108
  638. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/aead.cc.inc +427 -105
  639. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/cipher.cc.inc +412 -212
  640. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aes.cc.inc +230 -225
  641. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aesccm.cc.inc +115 -84
  642. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/internal.h +374 -27
  643. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cmac/cmac.cc.inc +28 -23
  644. data/third_party/boringssl-with-bazel/crypto/fipsmodule/delocate.h +36 -40
  645. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/check.cc.inc +68 -78
  646. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/dh.cc.inc +154 -196
  647. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/internal.h +24 -24
  648. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digest.cc.inc +40 -69
  649. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digests.cc.inc +13 -7
  650. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/internal.h +13 -11
  651. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/md32_common.h +86 -81
  652. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digestsign/digestsign.cc.inc +38 -34
  653. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec.cc.inc +187 -196
  654. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_key.cc.inc +196 -154
  655. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_montgomery.cc.inc +65 -125
  656. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/felem.cc.inc +85 -22
  657. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/internal.h +281 -287
  658. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/oct.cc.inc +23 -22
  659. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256.cc.inc +514 -573
  660. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256_internal.h +193 -0
  661. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/scalar.cc.inc +44 -39
  662. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple.cc.inc +58 -90
  663. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple_mul.cc.inc +39 -34
  664. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/util.cc.inc +6 -3
  665. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/wnaf.cc.inc +23 -20
  666. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdh/ecdh.cc.inc +6 -3
  667. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +47 -37
  668. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/internal.h +5 -10
  669. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/internal.h +38 -0
  670. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/jitter.cc.inc +463 -0
  671. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
  672. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hkdf/hkdf.cc.inc +8 -6
  673. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hmac/hmac.cc.inc +19 -16
  674. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/internal.h +41 -15
  675. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/keccak.cc.inc +172 -44
  676. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/fips_known_values.inc +5 -5
  677. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/mldsa.cc.inc +1632 -766
  678. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/fips_known_values.inc +5 -5
  679. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/mlkem.cc.inc +740 -436
  680. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
  681. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/ctrdrbg.cc.inc +240 -53
  682. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/internal.h +41 -26
  683. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/rand.cc.inc +221 -218
  684. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/internal.h +64 -67
  685. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/padding.cc.inc +49 -57
  686. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa.cc.inc +247 -234
  687. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa_impl.cc.inc +392 -692
  688. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/fips.cc.inc +10 -10
  689. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/self_check.cc.inc +479 -449
  690. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/internal.h +34 -11
  691. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +46 -43
  692. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/internal.h +61 -70
  693. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha1.cc.inc +27 -13
  694. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha256.cc.inc +46 -30
  695. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha512.cc.inc +47 -47
  696. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/address.h +98 -73
  697. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.cc.inc +108 -98
  698. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.h +14 -24
  699. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.cc.inc +94 -91
  700. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.h +19 -31
  701. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/params.h +156 -56
  702. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +318 -132
  703. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.cc.inc +234 -81
  704. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.h +20 -34
  705. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.cc.inc +97 -96
  706. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.h +10 -20
  707. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/internal.h +2 -16
  708. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/kdf.cc.inc +26 -26
  709. data/third_party/boringssl-with-bazel/crypto/fuzzer_mode.cc +5 -5
  710. data/third_party/boringssl-with-bazel/crypto/hpke/hpke.cc +461 -97
  711. data/third_party/boringssl-with-bazel/crypto/hrss/hrss.cc +153 -149
  712. data/third_party/boringssl-with-bazel/crypto/hrss/internal.h +9 -13
  713. data/third_party/boringssl-with-bazel/crypto/internal.h +531 -394
  714. data/third_party/boringssl-with-bazel/crypto/kyber/internal.h +117 -12
  715. data/third_party/boringssl-with-bazel/crypto/kyber/kyber.cc +59 -58
  716. data/third_party/boringssl-with-bazel/crypto/lhash/internal.h +38 -37
  717. data/third_party/boringssl-with-bazel/crypto/lhash/lhash.cc +68 -65
  718. data/third_party/boringssl-with-bazel/crypto/md4/md4.cc +19 -6
  719. data/third_party/boringssl-with-bazel/crypto/md5/internal.h +6 -9
  720. data/third_party/boringssl-with-bazel/crypto/md5/md5.cc +18 -6
  721. data/third_party/boringssl-with-bazel/crypto/mem.cc +61 -65
  722. data/third_party/boringssl-with-bazel/crypto/mem_internal.h +671 -0
  723. data/third_party/boringssl-with-bazel/crypto/mldsa/mldsa.cc +238 -32
  724. data/third_party/boringssl-with-bazel/crypto/mlkem/mlkem.cc +21 -65
  725. data/third_party/boringssl-with-bazel/crypto/obj/obj.cc +132 -157
  726. data/third_party/boringssl-with-bazel/crypto/obj/obj_dat.h +79 -1
  727. data/third_party/boringssl-with-bazel/crypto/obj/obj_xref.cc +14 -11
  728. data/third_party/boringssl-with-bazel/crypto/params_internal.h +30 -0
  729. data/third_party/boringssl-with-bazel/crypto/pem/internal.h +20 -15
  730. data/third_party/boringssl-with-bazel/crypto/pem/pem_all.cc +20 -19
  731. data/third_party/boringssl-with-bazel/crypto/pem/pem_info.cc +72 -76
  732. data/third_party/boringssl-with-bazel/crypto/pem/pem_lib.cc +215 -217
  733. data/third_party/boringssl-with-bazel/crypto/pem/pem_oth.cc +6 -6
  734. data/third_party/boringssl-with-bazel/crypto/pem/pem_pk8.cc +13 -13
  735. data/third_party/boringssl-with-bazel/crypto/pem/pem_pkey.cc +11 -11
  736. data/third_party/boringssl-with-bazel/crypto/pkcs7/internal.h +12 -17
  737. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7.cc +29 -27
  738. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7_x509.cc +55 -49
  739. data/third_party/boringssl-with-bazel/crypto/pkcs8/internal.h +21 -26
  740. data/third_party/boringssl-with-bazel/crypto/pkcs8/p5_pbev2.cc +33 -31
  741. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8.cc +73 -81
  742. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8_x509.cc +139 -138
  743. data/third_party/boringssl-with-bazel/crypto/poly1305/internal.h +3 -7
  744. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305.cc +5 -4
  745. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_arm.cc +43 -47
  746. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_vec.cc +29 -26
  747. data/third_party/boringssl-with-bazel/crypto/pool/internal.h +64 -20
  748. data/third_party/boringssl-with-bazel/crypto/pool/pool.cc +177 -157
  749. data/third_party/boringssl-with-bazel/crypto/rand/deterministic.cc +9 -16
  750. data/third_party/boringssl-with-bazel/crypto/rand/fork_detect.cc +70 -42
  751. data/third_party/boringssl-with-bazel/crypto/rand/forkunsafe.cc +7 -7
  752. data/third_party/boringssl-with-bazel/crypto/rand/getentropy.cc +6 -13
  753. data/third_party/boringssl-with-bazel/crypto/rand/internal.h +16 -4
  754. data/third_party/boringssl-with-bazel/crypto/rand/ios.cc +4 -11
  755. data/third_party/boringssl-with-bazel/crypto/rand/rand.cc +11 -9
  756. data/third_party/boringssl-with-bazel/crypto/rand/trusty.cc +4 -11
  757. data/third_party/boringssl-with-bazel/crypto/rand/urandom.cc +16 -195
  758. data/third_party/boringssl-with-bazel/crypto/rand/windows.cc +12 -19
  759. data/third_party/boringssl-with-bazel/crypto/refcount.cc +7 -17
  760. data/third_party/boringssl-with-bazel/crypto/rsa/internal.h +22 -7
  761. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_asn1.cc +199 -78
  762. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_crypt.cc +49 -50
  763. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_extra.cc +11 -0
  764. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_print.cc +4 -6
  765. data/third_party/boringssl-with-bazel/crypto/sha/sha1.cc +3 -0
  766. data/third_party/boringssl-with-bazel/crypto/sha/sha256.cc +3 -1
  767. data/third_party/boringssl-with-bazel/crypto/sha/sha512.cc +6 -4
  768. data/third_party/boringssl-with-bazel/crypto/siphash/siphash.cc +2 -0
  769. data/third_party/boringssl-with-bazel/crypto/slhdsa/slhdsa.cc +43 -6
  770. data/third_party/boringssl-with-bazel/crypto/spake2plus/internal.h +31 -31
  771. data/third_party/boringssl-with-bazel/crypto/spake2plus/spake2plus.cc +1 -1
  772. data/third_party/boringssl-with-bazel/crypto/stack/stack.cc +89 -130
  773. data/third_party/boringssl-with-bazel/crypto/thread.cc +14 -14
  774. data/third_party/boringssl-with-bazel/crypto/thread_none.cc +10 -13
  775. data/third_party/boringssl-with-bazel/crypto/thread_pthread.cc +22 -35
  776. data/third_party/boringssl-with-bazel/crypto/thread_win.cc +29 -40
  777. data/third_party/boringssl-with-bazel/crypto/trust_token/internal.h +81 -88
  778. data/third_party/boringssl-with-bazel/crypto/trust_token/pmbtoken.cc +160 -144
  779. data/third_party/boringssl-with-bazel/crypto/trust_token/trust_token.cc +96 -80
  780. data/third_party/boringssl-with-bazel/crypto/trust_token/voprf.cc +90 -87
  781. data/third_party/boringssl-with-bazel/crypto/x509/a_digest.cc +5 -5
  782. data/third_party/boringssl-with-bazel/crypto/x509/a_sign.cc +51 -48
  783. data/third_party/boringssl-with-bazel/crypto/x509/a_verify.cc +30 -34
  784. data/third_party/boringssl-with-bazel/crypto/x509/algorithm.cc +47 -16
  785. data/third_party/boringssl-with-bazel/crypto/x509/asn1_gen.cc +41 -43
  786. data/third_party/boringssl-with-bazel/crypto/x509/by_dir.cc +183 -237
  787. data/third_party/boringssl-with-bazel/crypto/x509/by_file.cc +29 -30
  788. data/third_party/boringssl-with-bazel/crypto/x509/internal.h +276 -180
  789. data/third_party/boringssl-with-bazel/crypto/x509/name_print.cc +15 -13
  790. data/third_party/boringssl-with-bazel/crypto/x509/policy.cc +415 -525
  791. data/third_party/boringssl-with-bazel/crypto/x509/rsa_pss.cc +94 -271
  792. data/third_party/boringssl-with-bazel/crypto/x509/t_crl.cc +11 -8
  793. data/third_party/boringssl-with-bazel/crypto/x509/t_req.cc +26 -23
  794. data/third_party/boringssl-with-bazel/crypto/x509/t_x509.cc +26 -22
  795. data/third_party/boringssl-with-bazel/crypto/x509/t_x509a.cc +3 -1
  796. data/third_party/boringssl-with-bazel/crypto/x509/v3_akey.cc +69 -76
  797. data/third_party/boringssl-with-bazel/crypto/x509/v3_akeya.cc +2 -2
  798. data/third_party/boringssl-with-bazel/crypto/x509/v3_alt.cc +112 -69
  799. data/third_party/boringssl-with-bazel/crypto/x509/v3_bcons.cc +15 -14
  800. data/third_party/boringssl-with-bazel/crypto/x509/v3_bitst.cc +16 -18
  801. data/third_party/boringssl-with-bazel/crypto/x509/v3_conf.cc +62 -67
  802. data/third_party/boringssl-with-bazel/crypto/x509/v3_cpols.cc +143 -170
  803. data/third_party/boringssl-with-bazel/crypto/x509/v3_crld.cc +121 -165
  804. data/third_party/boringssl-with-bazel/crypto/x509/v3_enum.cc +13 -12
  805. data/third_party/boringssl-with-bazel/crypto/x509/v3_extku.cc +17 -34
  806. data/third_party/boringssl-with-bazel/crypto/x509/v3_genn.cc +20 -10
  807. data/third_party/boringssl-with-bazel/crypto/x509/v3_ia5.cc +22 -18
  808. data/third_party/boringssl-with-bazel/crypto/x509/v3_info.cc +45 -47
  809. data/third_party/boringssl-with-bazel/crypto/x509/v3_int.cc +35 -33
  810. data/third_party/boringssl-with-bazel/crypto/x509/v3_lib.cc +106 -61
  811. data/third_party/boringssl-with-bazel/crypto/x509/v3_ncons.cc +642 -358
  812. data/third_party/boringssl-with-bazel/crypto/x509/v3_ocsp.cc +25 -22
  813. data/third_party/boringssl-with-bazel/crypto/x509/v3_pcons.cc +15 -14
  814. data/third_party/boringssl-with-bazel/crypto/x509/v3_pmaps.cc +16 -15
  815. data/third_party/boringssl-with-bazel/crypto/x509/v3_prn.cc +6 -6
  816. data/third_party/boringssl-with-bazel/crypto/x509/v3_purp.cc +150 -137
  817. data/third_party/boringssl-with-bazel/crypto/x509/v3_skey.cc +23 -26
  818. data/third_party/boringssl-with-bazel/crypto/x509/v3_utl.cc +151 -178
  819. data/third_party/boringssl-with-bazel/crypto/x509/x509.cc +1 -1
  820. data/third_party/boringssl-with-bazel/crypto/x509/x509_att.cc +32 -30
  821. data/third_party/boringssl-with-bazel/crypto/x509/x509_cmp.cc +95 -88
  822. data/third_party/boringssl-with-bazel/crypto/x509/x509_d2.cc +9 -9
  823. data/third_party/boringssl-with-bazel/crypto/x509/x509_def.cc +6 -8
  824. data/third_party/boringssl-with-bazel/crypto/x509/x509_ext.cc +46 -24
  825. data/third_party/boringssl-with-bazel/crypto/x509/x509_lu.cc +211 -195
  826. data/third_party/boringssl-with-bazel/crypto/x509/x509_obj.cc +20 -16
  827. data/third_party/boringssl-with-bazel/crypto/x509/x509_req.cc +37 -46
  828. data/third_party/boringssl-with-bazel/crypto/x509/x509_set.cc +62 -90
  829. data/third_party/boringssl-with-bazel/crypto/x509/x509_trs.cc +18 -13
  830. data/third_party/boringssl-with-bazel/crypto/x509/x509_v3.cc +33 -33
  831. data/third_party/boringssl-with-bazel/crypto/x509/x509_vfy.cc +109 -110
  832. data/third_party/boringssl-with-bazel/crypto/x509/x509_vpm.cc +56 -47
  833. data/third_party/boringssl-with-bazel/crypto/x509/x509cset.cc +27 -40
  834. data/third_party/boringssl-with-bazel/crypto/x509/x509name.cc +77 -67
  835. data/third_party/boringssl-with-bazel/crypto/x509/x509rset.cc +5 -17
  836. data/third_party/boringssl-with-bazel/crypto/x509/x509spki.cc +13 -13
  837. data/third_party/boringssl-with-bazel/crypto/x509/x_algor.cc +131 -24
  838. data/third_party/boringssl-with-bazel/crypto/x509/x_all.cc +72 -39
  839. data/third_party/boringssl-with-bazel/crypto/x509/x_attrib.cc +10 -4
  840. data/third_party/boringssl-with-bazel/crypto/x509/x_crl.cc +77 -44
  841. data/third_party/boringssl-with-bazel/crypto/x509/x_exten.cc +6 -0
  842. data/third_party/boringssl-with-bazel/crypto/x509/x_name.cc +311 -383
  843. data/third_party/boringssl-with-bazel/crypto/x509/x_pubkey.cc +129 -82
  844. data/third_party/boringssl-with-bazel/crypto/x509/x_req.cc +11 -6
  845. data/third_party/boringssl-with-bazel/crypto/x509/x_sig.cc +4 -4
  846. data/third_party/boringssl-with-bazel/crypto/x509/x_spki.cc +11 -1
  847. data/third_party/boringssl-with-bazel/crypto/x509/x_x509.cc +285 -280
  848. data/third_party/boringssl-with-bazel/crypto/x509/x_x509a.cc +60 -60
  849. data/third_party/boringssl-with-bazel/crypto/xwing/xwing.cc +257 -0
  850. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +301 -0
  851. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +301 -0
  852. data/third_party/boringssl-with-bazel/gen/crypto/err_data.cc +526 -500
  853. data/third_party/boringssl-with-bazel/include/openssl/aead.h +286 -114
  854. data/third_party/boringssl-with-bazel/include/openssl/aes.h +43 -43
  855. data/third_party/boringssl-with-bazel/include/openssl/asm_base.h +29 -16
  856. data/third_party/boringssl-with-bazel/include/openssl/asn1.h +641 -631
  857. data/third_party/boringssl-with-bazel/include/openssl/asn1t.h +7 -9
  858. data/third_party/boringssl-with-bazel/include/openssl/base.h +34 -54
  859. data/third_party/boringssl-with-bazel/include/openssl/base64.h +30 -30
  860. data/third_party/boringssl-with-bazel/include/openssl/bio.h +373 -316
  861. data/third_party/boringssl-with-bazel/include/openssl/blake2.h +15 -11
  862. data/third_party/boringssl-with-bazel/include/openssl/blowfish.h +10 -3
  863. data/third_party/boringssl-with-bazel/include/openssl/bn.h +298 -306
  864. data/third_party/boringssl-with-bazel/include/openssl/buf.h +14 -14
  865. data/third_party/boringssl-with-bazel/include/openssl/bytestring.h +272 -207
  866. data/third_party/boringssl-with-bazel/include/openssl/cast.h +45 -8
  867. data/third_party/boringssl-with-bazel/include/openssl/chacha.h +3 -3
  868. data/third_party/boringssl-with-bazel/include/openssl/cipher.h +334 -152
  869. data/third_party/boringssl-with-bazel/include/openssl/cmac.h +13 -13
  870. data/third_party/boringssl-with-bazel/include/openssl/cms.h +35 -34
  871. data/third_party/boringssl-with-bazel/include/openssl/conf.h +15 -14
  872. data/third_party/boringssl-with-bazel/include/openssl/crypto.h +15 -13
  873. data/third_party/boringssl-with-bazel/include/openssl/ctrdrbg.h +49 -15
  874. data/third_party/boringssl-with-bazel/include/openssl/curve25519.h +24 -24
  875. data/third_party/boringssl-with-bazel/include/openssl/des.h +22 -16
  876. data/third_party/boringssl-with-bazel/include/openssl/dh.h +95 -95
  877. data/third_party/boringssl-with-bazel/include/openssl/digest.h +140 -71
  878. data/third_party/boringssl-with-bazel/include/openssl/dsa.h +101 -101
  879. data/third_party/boringssl-with-bazel/include/openssl/ec.h +143 -119
  880. data/third_party/boringssl-with-bazel/include/openssl/ec_key.h +97 -97
  881. data/third_party/boringssl-with-bazel/include/openssl/ecdh.h +9 -9
  882. data/third_party/boringssl-with-bazel/include/openssl/ecdsa.h +89 -46
  883. data/third_party/boringssl-with-bazel/include/openssl/engine.h +5 -5
  884. data/third_party/boringssl-with-bazel/include/openssl/err.h +73 -71
  885. data/third_party/boringssl-with-bazel/include/openssl/evp.h +824 -344
  886. data/third_party/boringssl-with-bazel/include/openssl/evp_errors.h +9 -2
  887. data/third_party/boringssl-with-bazel/include/openssl/ex_data.h +27 -32
  888. data/third_party/boringssl-with-bazel/include/openssl/hkdf.h +6 -6
  889. data/third_party/boringssl-with-bazel/include/openssl/hmac.h +31 -31
  890. data/third_party/boringssl-with-bazel/include/openssl/hpke.h +133 -117
  891. data/third_party/boringssl-with-bazel/include/openssl/hrss.h +14 -8
  892. data/third_party/boringssl-with-bazel/include/openssl/kdf.h +20 -19
  893. data/third_party/boringssl-with-bazel/include/openssl/lhash.h +4 -25
  894. data/third_party/boringssl-with-bazel/include/openssl/md4.h +14 -7
  895. data/third_party/boringssl-with-bazel/include/openssl/md5.h +7 -7
  896. data/third_party/boringssl-with-bazel/include/openssl/mem.h +38 -38
  897. data/third_party/boringssl-with-bazel/include/openssl/mldsa.h +380 -24
  898. data/third_party/boringssl-with-bazel/include/openssl/mlkem.h +43 -43
  899. data/third_party/boringssl-with-bazel/include/openssl/nid.h +1297 -2
  900. data/third_party/boringssl-with-bazel/include/openssl/obj.h +49 -49
  901. data/third_party/boringssl-with-bazel/include/openssl/opensslconf.h +30 -0
  902. data/third_party/boringssl-with-bazel/include/openssl/params.h +42 -0
  903. data/third_party/boringssl-with-bazel/include/openssl/pem.h +39 -30
  904. data/third_party/boringssl-with-bazel/include/openssl/pkcs7.h +40 -40
  905. data/third_party/boringssl-with-bazel/include/openssl/pkcs8.h +69 -63
  906. data/third_party/boringssl-with-bazel/include/openssl/poly1305.h +8 -5
  907. data/third_party/boringssl-with-bazel/include/openssl/pool.h +54 -25
  908. data/third_party/boringssl-with-bazel/include/openssl/posix_time.h +6 -6
  909. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols.h +7866 -0
  910. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_S.h +585 -0
  911. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_c.h +305 -0
  912. data/third_party/boringssl-with-bazel/include/openssl/rand.h +18 -18
  913. data/third_party/boringssl-with-bazel/include/openssl/rc4.h +4 -4
  914. data/third_party/boringssl-with-bazel/include/openssl/ripemd.h +15 -10
  915. data/third_party/boringssl-with-bazel/include/openssl/rsa.h +272 -235
  916. data/third_party/boringssl-with-bazel/include/openssl/service_indicator.h +4 -81
  917. data/third_party/boringssl-with-bazel/include/openssl/sha.h +43 -166
  918. data/third_party/boringssl-with-bazel/include/openssl/sha2.h +201 -0
  919. data/third_party/boringssl-with-bazel/include/openssl/slhdsa.h +100 -48
  920. data/third_party/boringssl-with-bazel/include/openssl/span.h +190 -75
  921. data/third_party/boringssl-with-bazel/include/openssl/ssl.h +2168 -1567
  922. data/third_party/boringssl-with-bazel/include/openssl/ssl3.h +11 -69
  923. data/third_party/boringssl-with-bazel/include/openssl/stack.h +135 -80
  924. data/third_party/boringssl-with-bazel/include/openssl/target.h +13 -1
  925. data/third_party/boringssl-with-bazel/include/openssl/thread.h +0 -10
  926. data/third_party/boringssl-with-bazel/include/openssl/tls1.h +31 -310
  927. data/third_party/boringssl-with-bazel/include/openssl/tls_prf.h +47 -0
  928. data/third_party/boringssl-with-bazel/include/openssl/trust_token.h +97 -92
  929. data/third_party/boringssl-with-bazel/include/openssl/type_check.h +1 -1
  930. data/third_party/boringssl-with-bazel/include/openssl/x509.h +1805 -1857
  931. data/third_party/boringssl-with-bazel/include/openssl/x509v3.h +1 -1
  932. data/third_party/boringssl-with-bazel/include/openssl/xwing.h +115 -0
  933. data/third_party/boringssl-with-bazel/ssl/bio_ssl.cc +24 -19
  934. data/third_party/boringssl-with-bazel/ssl/d1_both.cc +59 -57
  935. data/third_party/boringssl-with-bazel/ssl/d1_lib.cc +53 -42
  936. data/third_party/boringssl-with-bazel/ssl/d1_pkt.cc +4 -4
  937. data/third_party/boringssl-with-bazel/ssl/d1_srtp.cc +2 -2
  938. data/third_party/boringssl-with-bazel/ssl/dtls_method.cc +10 -10
  939. data/third_party/boringssl-with-bazel/ssl/dtls_record.cc +6 -6
  940. data/third_party/boringssl-with-bazel/ssl/encrypted_client_hello.cc +61 -71
  941. data/third_party/boringssl-with-bazel/ssl/extensions.cc +967 -366
  942. data/third_party/boringssl-with-bazel/ssl/handoff.cc +77 -38
  943. data/third_party/boringssl-with-bazel/ssl/handshake.cc +63 -30
  944. data/third_party/boringssl-with-bazel/ssl/handshake_client.cc +129 -85
  945. data/third_party/boringssl-with-bazel/ssl/handshake_server.cc +116 -68
  946. data/third_party/boringssl-with-bazel/ssl/internal.h +983 -1207
  947. data/third_party/boringssl-with-bazel/ssl/s3_both.cc +34 -29
  948. data/third_party/boringssl-with-bazel/ssl/s3_lib.cc +4 -3
  949. data/third_party/boringssl-with-bazel/ssl/s3_pkt.cc +12 -12
  950. data/third_party/boringssl-with-bazel/ssl/ssl_aead_ctx.cc +5 -5
  951. data/third_party/boringssl-with-bazel/ssl/ssl_asn1.cc +114 -59
  952. data/third_party/boringssl-with-bazel/ssl/ssl_buffer.cc +17 -18
  953. data/third_party/boringssl-with-bazel/ssl/ssl_cert.cc +99 -61
  954. data/third_party/boringssl-with-bazel/ssl/ssl_cipher.cc +143 -134
  955. data/third_party/boringssl-with-bazel/ssl/ssl_credential.cc +188 -90
  956. data/third_party/boringssl-with-bazel/ssl/ssl_file.cc +132 -225
  957. data/third_party/boringssl-with-bazel/ssl/ssl_key_share.cc +79 -7
  958. data/third_party/boringssl-with-bazel/ssl/ssl_lib.cc +698 -302
  959. data/third_party/boringssl-with-bazel/ssl/ssl_privkey.cc +102 -45
  960. data/third_party/boringssl-with-bazel/ssl/ssl_session.cc +117 -102
  961. data/third_party/boringssl-with-bazel/ssl/ssl_transcript.cc +3 -3
  962. data/third_party/boringssl-with-bazel/ssl/ssl_versions.cc +24 -24
  963. data/third_party/boringssl-with-bazel/ssl/ssl_x509.cc +184 -170
  964. data/third_party/boringssl-with-bazel/ssl/t1_enc.cc +12 -10
  965. data/third_party/boringssl-with-bazel/ssl/tls13_both.cc +86 -54
  966. data/third_party/boringssl-with-bazel/ssl/tls13_client.cc +176 -90
  967. data/third_party/boringssl-with-bazel/ssl/tls13_enc.cc +166 -112
  968. data/third_party/boringssl-with-bazel/ssl/tls13_server.cc +188 -97
  969. data/third_party/boringssl-with-bazel/ssl/tls_method.cc +23 -23
  970. data/third_party/boringssl-with-bazel/ssl/tls_record.cc +17 -14
  971. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
  972. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
  973. data/third_party/boringssl-with-bazel/third_party/fiat/curve25519_64_adx.h +37 -33
  974. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64.h +4 -93
  975. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64_msvc.h +4 -69
  976. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_32.br.c.inc +71 -0
  977. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_64.br.c.inc +84 -0
  978. data/third_party/boringssl-with-bazel/third_party/fiat/p256_point.br.c.inc +166 -0
  979. metadata +77 -52
  980. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +0 -240
  981. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +0 -56
  982. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +0 -157
  983. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +0 -72
  984. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +0 -181
  985. data/third_party/abseil-cpp/absl/base/internal/identity.h +0 -39
  986. data/third_party/abseil-cpp/absl/base/internal/nullability_deprecated.h +0 -106
  987. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -105
  988. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -50
  989. data/third_party/abseil-cpp/absl/strings/string_view.cc +0 -257
  990. data/third_party/boringssl-with-bazel/crypto/evp/p_dh_asn1.cc +0 -142
  991. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa_asn1.cc +0 -279
  992. data/third_party/boringssl-with-bazel/crypto/evp/p_ec_asn1.cc +0 -286
  993. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519_asn1.cc +0 -225
  994. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa_asn1.cc +0 -198
  995. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519_asn1.cc +0 -237
  996. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p224-64.cc.inc +0 -1163
  997. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.cc.inc +0 -741
  998. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.h +0 -207
  999. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/blinding.cc.inc +0 -147
  1000. data/third_party/boringssl-with-bazel/crypto/rand/getrandom_fillin.h +0 -64
  1001. data/third_party/boringssl-with-bazel/crypto/rand/passive.cc +0 -178
  1002. data/third_party/boringssl-with-bazel/crypto/x509/ext_dat.h +0 -92
  1003. data/third_party/boringssl-with-bazel/include/openssl/bcm_public.h +0 -82
  1004. data/third_party/boringssl-with-bazel/include/openssl/experimental/kyber.h +0 -146
@@ -18,6 +18,8 @@
18
18
  #include <limits.h>
19
19
  #include <string.h>
20
20
 
21
+ #include <iterator>
22
+
21
23
  #include <openssl/bn.h>
22
24
  #include <openssl/digest.h>
23
25
  #include <openssl/engine.h>
@@ -26,40 +28,41 @@
26
28
  #include <openssl/md5.h>
27
29
  #include <openssl/mem.h>
28
30
  #include <openssl/nid.h>
29
- #include <openssl/thread.h>
30
31
 
31
32
  #include "../../internal.h"
33
+ #include "../../mem_internal.h"
32
34
  #include "../bcm_interface.h"
33
35
  #include "../bn/internal.h"
34
36
  #include "../delocate.h"
35
37
  #include "internal.h"
36
38
 
37
39
 
40
+ using namespace bssl;
41
+
38
42
  // RSA_R_BLOCK_TYPE_IS_NOT_02 is part of the legacy SSLv23 padding scheme.
39
43
  // Cryptography.io depends on this error code.
40
44
  OPENSSL_DECLARE_ERROR_REASON(RSA, BLOCK_TYPE_IS_NOT_02)
41
45
 
42
46
  DEFINE_STATIC_EX_DATA_CLASS(g_rsa_ex_data_class)
43
47
 
44
- static int bn_dup_into(BIGNUM **dst, const BIGNUM *src) {
45
- if (src == NULL) {
48
+ static int bn_dup_into(UniquePtr<BIGNUM> *dst, const BIGNUM *src) {
49
+ if (src == nullptr) {
46
50
  OPENSSL_PUT_ERROR(RSA, ERR_R_PASSED_NULL_PARAMETER);
47
51
  return 0;
48
52
  }
49
53
 
50
- BN_free(*dst);
51
- *dst = BN_dup(src);
52
- return *dst != NULL;
54
+ dst->reset(BN_dup(src));
55
+ return *dst != nullptr;
53
56
  }
54
57
 
55
58
  RSA *RSA_new_public_key(const BIGNUM *n, const BIGNUM *e) {
56
- RSA *rsa = RSA_new();
57
- if (rsa == NULL || //
59
+ RSAImpl *rsa = FromOpaque(RSA_new());
60
+ if (rsa == nullptr || //
58
61
  !bn_dup_into(&rsa->n, n) || //
59
62
  !bn_dup_into(&rsa->e, e) || //
60
63
  !RSA_check_key(rsa)) {
61
64
  RSA_free(rsa);
62
- return NULL;
65
+ return nullptr;
63
66
  }
64
67
 
65
68
  return rsa;
@@ -68,8 +71,8 @@ RSA *RSA_new_public_key(const BIGNUM *n, const BIGNUM *e) {
68
71
  RSA *RSA_new_private_key(const BIGNUM *n, const BIGNUM *e, const BIGNUM *d,
69
72
  const BIGNUM *p, const BIGNUM *q, const BIGNUM *dmp1,
70
73
  const BIGNUM *dmq1, const BIGNUM *iqmp) {
71
- RSA *rsa = RSA_new();
72
- if (rsa == NULL || //
74
+ RSAImpl *rsa = FromOpaque(RSA_new());
75
+ if (rsa == nullptr || //
73
76
  !bn_dup_into(&rsa->n, n) || //
74
77
  !bn_dup_into(&rsa->e, e) || //
75
78
  !bn_dup_into(&rsa->d, d) || //
@@ -80,7 +83,7 @@ RSA *RSA_new_private_key(const BIGNUM *n, const BIGNUM *e, const BIGNUM *d,
80
83
  !bn_dup_into(&rsa->iqmp, iqmp) || //
81
84
  !RSA_check_key(rsa)) {
82
85
  RSA_free(rsa);
83
- return NULL;
86
+ return nullptr;
84
87
  }
85
88
 
86
89
  return rsa;
@@ -88,23 +91,23 @@ RSA *RSA_new_private_key(const BIGNUM *n, const BIGNUM *e, const BIGNUM *d,
88
91
 
89
92
  RSA *RSA_new_private_key_no_crt(const BIGNUM *n, const BIGNUM *e,
90
93
  const BIGNUM *d) {
91
- RSA *rsa = RSA_new();
92
- if (rsa == NULL || //
94
+ RSAImpl *rsa = FromOpaque(RSA_new());
95
+ if (rsa == nullptr || //
93
96
  !bn_dup_into(&rsa->n, n) || //
94
97
  !bn_dup_into(&rsa->e, e) || //
95
98
  !bn_dup_into(&rsa->d, d) || //
96
99
  !RSA_check_key(rsa)) {
97
100
  RSA_free(rsa);
98
- return NULL;
101
+ return nullptr;
99
102
  }
100
103
 
101
104
  return rsa;
102
105
  }
103
106
 
104
107
  RSA *RSA_new_private_key_no_e(const BIGNUM *n, const BIGNUM *d) {
105
- RSA *rsa = RSA_new();
106
- if (rsa == NULL) {
107
- return NULL;
108
+ RSAImpl *rsa = FromOpaque(RSA_new());
109
+ if (rsa == nullptr) {
110
+ return nullptr;
108
111
  }
109
112
 
110
113
  rsa->flags |= RSA_FLAG_NO_PUBLIC_EXPONENT;
@@ -112,16 +115,16 @@ RSA *RSA_new_private_key_no_e(const BIGNUM *n, const BIGNUM *d) {
112
115
  !bn_dup_into(&rsa->d, d) || //
113
116
  !RSA_check_key(rsa)) {
114
117
  RSA_free(rsa);
115
- return NULL;
118
+ return nullptr;
116
119
  }
117
120
 
118
121
  return rsa;
119
122
  }
120
123
 
121
124
  RSA *RSA_new_public_key_large_e(const BIGNUM *n, const BIGNUM *e) {
122
- RSA *rsa = RSA_new();
123
- if (rsa == NULL) {
124
- return NULL;
125
+ RSAImpl *rsa = FromOpaque(RSA_new());
126
+ if (rsa == nullptr) {
127
+ return nullptr;
125
128
  }
126
129
 
127
130
  rsa->flags |= RSA_FLAG_LARGE_PUBLIC_EXPONENT;
@@ -129,7 +132,7 @@ RSA *RSA_new_public_key_large_e(const BIGNUM *n, const BIGNUM *e) {
129
132
  !bn_dup_into(&rsa->e, e) || //
130
133
  !RSA_check_key(rsa)) {
131
134
  RSA_free(rsa);
132
- return NULL;
135
+ return nullptr;
133
136
  }
134
137
 
135
138
  return rsa;
@@ -139,9 +142,9 @@ RSA *RSA_new_private_key_large_e(const BIGNUM *n, const BIGNUM *e,
139
142
  const BIGNUM *d, const BIGNUM *p,
140
143
  const BIGNUM *q, const BIGNUM *dmp1,
141
144
  const BIGNUM *dmq1, const BIGNUM *iqmp) {
142
- RSA *rsa = RSA_new();
143
- if (rsa == NULL) {
144
- return NULL;
145
+ RSAImpl *rsa = FromOpaque(RSA_new());
146
+ if (rsa == nullptr) {
147
+ return nullptr;
145
148
  }
146
149
 
147
150
  rsa->flags |= RSA_FLAG_LARGE_PUBLIC_EXPONENT;
@@ -155,165 +158,151 @@ RSA *RSA_new_private_key_large_e(const BIGNUM *n, const BIGNUM *e,
155
158
  !bn_dup_into(&rsa->iqmp, iqmp) || //
156
159
  !RSA_check_key(rsa)) {
157
160
  RSA_free(rsa);
158
- return NULL;
161
+ return nullptr;
159
162
  }
160
163
 
161
164
  return rsa;
162
165
  }
163
166
 
164
- RSA *RSA_new(void) { return RSA_new_method(NULL); }
165
-
166
- RSA *RSA_new_method(const ENGINE *engine) {
167
- RSA *rsa = reinterpret_cast<RSA *>(OPENSSL_zalloc(sizeof(RSA)));
168
- if (rsa == NULL) {
169
- return NULL;
167
+ RSAImpl::RSAImpl(const ENGINE *engine)
168
+ : RefCounted(CheckSubClass()),
169
+ meth(engine ? ENGINE_get_RSA_method(engine) : nullptr) {
170
+ if (meth == nullptr) {
171
+ meth = const_cast<RSA_METHOD *>(RSA_default_method());
170
172
  }
173
+ METHOD_ref(meth);
174
+ flags = meth->flags;
175
+ CRYPTO_new_ex_data(&ex_data);
176
+ }
171
177
 
172
- if (engine) {
173
- rsa->meth = ENGINE_get_RSA_method(engine);
174
- }
178
+ RSA *RSA_new() { return RSA_new_method(nullptr); }
175
179
 
176
- if (rsa->meth == NULL) {
177
- rsa->meth = (RSA_METHOD *)RSA_default_method();
180
+ RSA *RSA_new_method(const ENGINE *engine) {
181
+ UniquePtr<RSAImpl> rsa(New<RSAImpl>(engine));
182
+ if (rsa == nullptr) {
183
+ return nullptr;
178
184
  }
179
- METHOD_ref(rsa->meth);
180
185
 
181
- rsa->references = 1;
182
- rsa->flags = rsa->meth->flags;
183
- CRYPTO_MUTEX_init(&rsa->lock);
184
- CRYPTO_new_ex_data(&rsa->ex_data);
185
-
186
- if (rsa->meth->init && !rsa->meth->init(rsa)) {
187
- CRYPTO_free_ex_data(g_rsa_ex_data_class_bss_get(), rsa, &rsa->ex_data);
188
- CRYPTO_MUTEX_cleanup(&rsa->lock);
186
+ if (rsa->meth->init && !rsa->meth->init(rsa.get())) {
189
187
  METHOD_unref(rsa->meth);
190
- OPENSSL_free(rsa);
191
- return NULL;
188
+ rsa->meth = nullptr;
189
+ return nullptr;
192
190
  }
193
191
 
194
- return rsa;
192
+ return rsa.release();
195
193
  }
196
194
 
197
195
  RSA *RSA_new_method_no_e(const ENGINE *engine, const BIGNUM *n) {
198
- RSA *rsa = RSA_new_method(engine);
199
- if (rsa == NULL || !bn_dup_into(&rsa->n, n)) {
196
+ RSAImpl *rsa = FromOpaque(RSA_new_method(engine));
197
+ if (rsa == nullptr || !bn_dup_into(&rsa->n, n)) {
200
198
  RSA_free(rsa);
201
- return NULL;
199
+ return nullptr;
202
200
  }
203
201
  rsa->flags |= RSA_FLAG_NO_PUBLIC_EXPONENT;
204
202
  return rsa;
205
203
  }
206
204
 
207
- void RSA_free(RSA *rsa) {
208
- if (rsa == NULL) {
209
- return;
205
+ RSAImpl::~RSAImpl() {
206
+ if (meth != nullptr && meth->finish != nullptr) {
207
+ meth->finish(this);
210
208
  }
209
+ METHOD_unref(meth);
211
210
 
212
- if (!CRYPTO_refcount_dec_and_test_zero(&rsa->references)) {
213
- return;
214
- }
211
+ CRYPTO_free_ex_data(g_rsa_ex_data_class_bss_get(), &ex_data);
212
+ }
215
213
 
216
- if (rsa->meth->finish) {
217
- rsa->meth->finish(rsa);
214
+ void RSA_free(RSA *rsa) {
215
+ if (rsa != nullptr) {
216
+ FromOpaque(rsa)->DecRefInternal();
218
217
  }
219
- METHOD_unref(rsa->meth);
220
-
221
- CRYPTO_free_ex_data(g_rsa_ex_data_class_bss_get(), rsa, &rsa->ex_data);
222
-
223
- BN_free(rsa->n);
224
- BN_free(rsa->e);
225
- BN_free(rsa->d);
226
- BN_free(rsa->p);
227
- BN_free(rsa->q);
228
- BN_free(rsa->dmp1);
229
- BN_free(rsa->dmq1);
230
- BN_free(rsa->iqmp);
231
- rsa_invalidate_key(rsa);
232
- CRYPTO_MUTEX_cleanup(&rsa->lock);
233
- OPENSSL_free(rsa);
234
218
  }
235
219
 
236
220
  int RSA_up_ref(RSA *rsa) {
237
- CRYPTO_refcount_inc(&rsa->references);
221
+ FromOpaque(rsa)->UpRefInternal();
238
222
  return 1;
239
223
  }
240
224
 
241
- unsigned RSA_bits(const RSA *rsa) { return BN_num_bits(rsa->n); }
225
+ unsigned RSA_bits(const RSA *rsa) {
226
+ return BN_num_bits(FromOpaque(rsa)->n.get());
227
+ }
242
228
 
243
- const BIGNUM *RSA_get0_n(const RSA *rsa) { return rsa->n; }
229
+ const BIGNUM *RSA_get0_n(const RSA *rsa) { return FromOpaque(rsa)->n.get(); }
244
230
 
245
- const BIGNUM *RSA_get0_e(const RSA *rsa) { return rsa->e; }
231
+ const BIGNUM *RSA_get0_e(const RSA *rsa) { return FromOpaque(rsa)->e.get(); }
246
232
 
247
- const BIGNUM *RSA_get0_d(const RSA *rsa) { return rsa->d; }
233
+ const BIGNUM *RSA_get0_d(const RSA *rsa) { return FromOpaque(rsa)->d.get(); }
248
234
 
249
- const BIGNUM *RSA_get0_p(const RSA *rsa) { return rsa->p; }
235
+ const BIGNUM *RSA_get0_p(const RSA *rsa) { return FromOpaque(rsa)->p.get(); }
250
236
 
251
- const BIGNUM *RSA_get0_q(const RSA *rsa) { return rsa->q; }
237
+ const BIGNUM *RSA_get0_q(const RSA *rsa) { return FromOpaque(rsa)->q.get(); }
252
238
 
253
- const BIGNUM *RSA_get0_dmp1(const RSA *rsa) { return rsa->dmp1; }
239
+ const BIGNUM *RSA_get0_dmp1(const RSA *rsa) {
240
+ return FromOpaque(rsa)->dmp1.get();
241
+ }
254
242
 
255
- const BIGNUM *RSA_get0_dmq1(const RSA *rsa) { return rsa->dmq1; }
243
+ const BIGNUM *RSA_get0_dmq1(const RSA *rsa) {
244
+ return FromOpaque(rsa)->dmq1.get();
245
+ }
256
246
 
257
- const BIGNUM *RSA_get0_iqmp(const RSA *rsa) { return rsa->iqmp; }
247
+ const BIGNUM *RSA_get0_iqmp(const RSA *rsa) {
248
+ return FromOpaque(rsa)->iqmp.get();
249
+ }
258
250
 
259
251
  void RSA_get0_key(const RSA *rsa, const BIGNUM **out_n, const BIGNUM **out_e,
260
252
  const BIGNUM **out_d) {
261
- if (out_n != NULL) {
262
- *out_n = rsa->n;
253
+ auto *impl = FromOpaque(rsa);
254
+ if (out_n != nullptr) {
255
+ *out_n = impl->n.get();
263
256
  }
264
- if (out_e != NULL) {
265
- *out_e = rsa->e;
257
+ if (out_e != nullptr) {
258
+ *out_e = impl->e.get();
266
259
  }
267
- if (out_d != NULL) {
268
- *out_d = rsa->d;
260
+ if (out_d != nullptr) {
261
+ *out_d = impl->d.get();
269
262
  }
270
263
  }
271
264
 
272
265
  void RSA_get0_factors(const RSA *rsa, const BIGNUM **out_p,
273
266
  const BIGNUM **out_q) {
274
- if (out_p != NULL) {
275
- *out_p = rsa->p;
267
+ auto *impl = FromOpaque(rsa);
268
+ if (out_p != nullptr) {
269
+ *out_p = impl->p.get();
276
270
  }
277
- if (out_q != NULL) {
278
- *out_q = rsa->q;
271
+ if (out_q != nullptr) {
272
+ *out_q = impl->q.get();
279
273
  }
280
274
  }
281
275
 
282
- const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *rsa) {
283
- // We do not support the id-RSASSA-PSS key encoding. If we add support later,
284
- // the |maskHash| field should be filled in for OpenSSL compatibility.
285
- return NULL;
286
- }
287
-
288
276
  void RSA_get0_crt_params(const RSA *rsa, const BIGNUM **out_dmp1,
289
277
  const BIGNUM **out_dmq1, const BIGNUM **out_iqmp) {
290
- if (out_dmp1 != NULL) {
291
- *out_dmp1 = rsa->dmp1;
278
+ auto *impl = FromOpaque(rsa);
279
+ if (out_dmp1 != nullptr) {
280
+ *out_dmp1 = impl->dmp1.get();
292
281
  }
293
- if (out_dmq1 != NULL) {
294
- *out_dmq1 = rsa->dmq1;
282
+ if (out_dmq1 != nullptr) {
283
+ *out_dmq1 = impl->dmq1.get();
295
284
  }
296
- if (out_iqmp != NULL) {
297
- *out_iqmp = rsa->iqmp;
285
+ if (out_iqmp != nullptr) {
286
+ *out_iqmp = impl->iqmp.get();
298
287
  }
299
288
  }
300
289
 
301
290
  int RSA_set0_key(RSA *rsa, BIGNUM *n, BIGNUM *e, BIGNUM *d) {
302
- if ((rsa->n == NULL && n == NULL) || (rsa->e == NULL && e == NULL)) {
291
+ auto *impl = FromOpaque(rsa);
292
+
293
+ if ((impl->n == nullptr && n == nullptr) ||
294
+ (impl->e == nullptr && e == nullptr)) {
303
295
  return 0;
304
296
  }
305
297
 
306
- if (n != NULL) {
307
- BN_free(rsa->n);
308
- rsa->n = n;
298
+ if (n != nullptr) {
299
+ impl->n.reset(n);
309
300
  }
310
- if (e != NULL) {
311
- BN_free(rsa->e);
312
- rsa->e = e;
301
+ if (e != nullptr) {
302
+ impl->e.reset(e);
313
303
  }
314
- if (d != NULL) {
315
- BN_free(rsa->d);
316
- rsa->d = d;
304
+ if (d != nullptr) {
305
+ impl->d.reset(d);
317
306
  }
318
307
 
319
308
  rsa_invalidate_key(rsa);
@@ -321,17 +310,18 @@ int RSA_set0_key(RSA *rsa, BIGNUM *n, BIGNUM *e, BIGNUM *d) {
321
310
  }
322
311
 
323
312
  int RSA_set0_factors(RSA *rsa, BIGNUM *p, BIGNUM *q) {
324
- if ((rsa->p == NULL && p == NULL) || (rsa->q == NULL && q == NULL)) {
313
+ auto *impl = FromOpaque(rsa);
314
+
315
+ if ((impl->p == nullptr && p == nullptr) ||
316
+ (impl->q == nullptr && q == nullptr)) {
325
317
  return 0;
326
318
  }
327
319
 
328
- if (p != NULL) {
329
- BN_free(rsa->p);
330
- rsa->p = p;
320
+ if (p != nullptr) {
321
+ impl->p.reset(p);
331
322
  }
332
- if (q != NULL) {
333
- BN_free(rsa->q);
334
- rsa->q = q;
323
+ if (q != nullptr) {
324
+ impl->q.reset(q);
335
325
  }
336
326
 
337
327
  rsa_invalidate_key(rsa);
@@ -339,23 +329,22 @@ int RSA_set0_factors(RSA *rsa, BIGNUM *p, BIGNUM *q) {
339
329
  }
340
330
 
341
331
  int RSA_set0_crt_params(RSA *rsa, BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp) {
342
- if ((rsa->dmp1 == NULL && dmp1 == NULL) ||
343
- (rsa->dmq1 == NULL && dmq1 == NULL) ||
344
- (rsa->iqmp == NULL && iqmp == NULL)) {
332
+ auto *impl = FromOpaque(rsa);
333
+
334
+ if ((impl->dmp1 == nullptr && dmp1 == nullptr) ||
335
+ (impl->dmq1 == nullptr && dmq1 == nullptr) ||
336
+ (impl->iqmp == nullptr && iqmp == nullptr)) {
345
337
  return 0;
346
338
  }
347
339
 
348
- if (dmp1 != NULL) {
349
- BN_free(rsa->dmp1);
350
- rsa->dmp1 = dmp1;
340
+ if (dmp1 != nullptr) {
341
+ impl->dmp1.reset(dmp1);
351
342
  }
352
- if (dmq1 != NULL) {
353
- BN_free(rsa->dmq1);
354
- rsa->dmq1 = dmq1;
343
+ if (dmq1 != nullptr) {
344
+ impl->dmq1.reset(dmq1);
355
345
  }
356
- if (iqmp != NULL) {
357
- BN_free(rsa->iqmp);
358
- rsa->iqmp = iqmp;
346
+ if (iqmp != nullptr) {
347
+ impl->iqmp.reset(iqmp);
359
348
  }
360
349
 
361
350
  rsa_invalidate_key(rsa);
@@ -365,8 +354,11 @@ int RSA_set0_crt_params(RSA *rsa, BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp) {
365
354
  static int rsa_sign_raw_no_self_test(RSA *rsa, size_t *out_len, uint8_t *out,
366
355
  size_t max_out, const uint8_t *in,
367
356
  size_t in_len, int padding) {
368
- if (rsa->meth->sign_raw) {
369
- return rsa->meth->sign_raw(rsa, out_len, out, max_out, in, in_len, padding);
357
+ auto *impl = FromOpaque(rsa);
358
+
359
+ if (impl->meth->sign_raw) {
360
+ return impl->meth->sign_raw(rsa, out_len, out, max_out, in, in_len,
361
+ padding);
370
362
  }
371
363
 
372
364
  return rsa_default_sign_raw(rsa, out_len, out, max_out, in, in_len, padding);
@@ -374,15 +366,18 @@ static int rsa_sign_raw_no_self_test(RSA *rsa, size_t *out_len, uint8_t *out,
374
366
 
375
367
  int RSA_sign_raw(RSA *rsa, size_t *out_len, uint8_t *out, size_t max_out,
376
368
  const uint8_t *in, size_t in_len, int padding) {
377
- boringssl_ensure_rsa_self_test();
369
+ boringssl_ensure_rsa_sign_self_test();
378
370
  return rsa_sign_raw_no_self_test(rsa, out_len, out, max_out, in, in_len,
379
371
  padding);
380
372
  }
381
373
 
382
- unsigned RSA_size(const RSA *rsa) { return BN_num_bytes(rsa->n); }
374
+ unsigned RSA_size(const RSA *rsa) {
375
+ return BN_num_bytes(FromOpaque(rsa)->n.get());
376
+ }
383
377
 
384
378
  int RSA_is_opaque(const RSA *rsa) {
385
- return rsa->meth && (rsa->meth->flags & RSA_FLAG_OPAQUE);
379
+ auto *impl = FromOpaque(rsa);
380
+ return impl->meth && (impl->meth->flags & RSA_FLAG_OPAQUE);
386
381
  }
387
382
 
388
383
  int RSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_unused *unused,
@@ -392,11 +387,13 @@ int RSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_unused *unused,
392
387
  }
393
388
 
394
389
  int RSA_set_ex_data(RSA *rsa, int idx, void *arg) {
395
- return CRYPTO_set_ex_data(&rsa->ex_data, idx, arg);
390
+ auto *impl = FromOpaque(rsa);
391
+ return CRYPTO_set_ex_data(&impl->ex_data, idx, arg);
396
392
  }
397
393
 
398
394
  void *RSA_get_ex_data(const RSA *rsa, int idx) {
399
- return CRYPTO_get_ex_data(&rsa->ex_data, idx);
395
+ auto *impl = FromOpaque(rsa);
396
+ return CRYPTO_get_ex_data(&impl->ex_data, idx);
400
397
  }
401
398
 
402
399
  // SSL_SIG_LENGTH is the size of an SSL/TLS (prior to TLS 1.2) signature: it's
@@ -410,7 +407,7 @@ struct pkcs1_sig_prefix {
410
407
  int nid;
411
408
  // hash_len is the expected length of the hash function.
412
409
  uint8_t hash_len;
413
- // len is the number of bytes of |bytes| which are valid.
410
+ // len is the number of bytes of `bytes` which are valid.
414
411
  uint8_t len;
415
412
  // bytes contains the DER bytes.
416
413
  uint8_t bytes[19];
@@ -428,35 +425,35 @@ static const struct pkcs1_sig_prefix kPKCS1SigPrefixes[] = {
428
425
  },
429
426
  {
430
427
  NID_sha1,
431
- BCM_SHA_DIGEST_LENGTH,
428
+ SHA_DIGEST_LENGTH,
432
429
  15,
433
430
  {0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05,
434
431
  0x00, 0x04, 0x14},
435
432
  },
436
433
  {
437
434
  NID_sha224,
438
- BCM_SHA224_DIGEST_LENGTH,
435
+ SHA224_DIGEST_LENGTH,
439
436
  19,
440
437
  {0x30, 0x2d, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03,
441
438
  0x04, 0x02, 0x04, 0x05, 0x00, 0x04, 0x1c},
442
439
  },
443
440
  {
444
441
  NID_sha256,
445
- BCM_SHA256_DIGEST_LENGTH,
442
+ SHA256_DIGEST_LENGTH,
446
443
  19,
447
444
  {0x30, 0x31, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03,
448
445
  0x04, 0x02, 0x01, 0x05, 0x00, 0x04, 0x20},
449
446
  },
450
447
  {
451
448
  NID_sha384,
452
- BCM_SHA384_DIGEST_LENGTH,
449
+ SHA384_DIGEST_LENGTH,
453
450
  19,
454
451
  {0x30, 0x41, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03,
455
452
  0x04, 0x02, 0x02, 0x05, 0x00, 0x04, 0x30},
456
453
  },
457
454
  {
458
455
  NID_sha512,
459
- BCM_SHA512_DIGEST_LENGTH,
456
+ SHA512_DIGEST_LENGTH,
460
457
  19,
461
458
  {0x30, 0x51, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03,
462
459
  0x04, 0x02, 0x03, 0x05, 0x00, 0x04, 0x40},
@@ -545,23 +542,25 @@ int RSA_add_pkcs1_prefix(uint8_t **out_msg, size_t *out_msg_len,
545
542
  return 0;
546
543
  }
547
544
 
548
- int rsa_sign_no_self_test(int hash_nid, const uint8_t *digest,
549
- size_t digest_len, uint8_t *out, unsigned *out_len,
550
- RSA *rsa) {
551
- if (rsa->meth->sign) {
545
+ int bssl::rsa_sign_no_self_test(int hash_nid, const uint8_t *digest,
546
+ size_t digest_len, uint8_t *out,
547
+ unsigned *out_len, RSA *rsa) {
548
+ auto *impl = FromOpaque(rsa);
549
+
550
+ if (impl->meth->sign) {
552
551
  if (!rsa_check_digest_size(hash_nid, digest_len)) {
553
552
  return 0;
554
553
  }
555
- // All supported digest lengths fit in |unsigned|.
554
+ // All supported digest lengths fit in `unsigned`.
556
555
  assert(digest_len <= EVP_MAX_MD_SIZE);
557
556
  static_assert(EVP_MAX_MD_SIZE <= UINT_MAX, "digest too long");
558
- return rsa->meth->sign(hash_nid, digest, (unsigned)digest_len, out, out_len,
559
- rsa);
557
+ return impl->meth->sign(hash_nid, digest, (unsigned)digest_len, out,
558
+ out_len, rsa);
560
559
  }
561
560
 
562
561
  const unsigned rsa_size = RSA_size(rsa);
563
562
  int ret = 0;
564
- uint8_t *signed_msg = NULL;
563
+ uint8_t *signed_msg = nullptr;
565
564
  size_t signed_msg_len = 0;
566
565
  int signed_msg_is_alloced = 0;
567
566
  size_t size_t_out_len;
@@ -591,7 +590,7 @@ err:
591
590
 
592
591
  int RSA_sign(int hash_nid, const uint8_t *digest, size_t digest_len,
593
592
  uint8_t *out, unsigned *out_len, RSA *rsa) {
594
- boringssl_ensure_rsa_self_test();
593
+ boringssl_ensure_rsa_sign_self_test();
595
594
 
596
595
  return rsa_sign_no_self_test(hash_nid, digest, digest_len, out, out_len, rsa);
597
596
  }
@@ -606,7 +605,7 @@ int RSA_sign_pss_mgf1(RSA *rsa, size_t *out_len, uint8_t *out, size_t max_out,
606
605
 
607
606
  size_t padded_len = RSA_size(rsa);
608
607
  uint8_t *padded = reinterpret_cast<uint8_t *>(OPENSSL_malloc(padded_len));
609
- if (padded == NULL) {
608
+ if (padded == nullptr) {
610
609
  return 0;
611
610
  }
612
611
 
@@ -618,18 +617,19 @@ int RSA_sign_pss_mgf1(RSA *rsa, size_t *out_len, uint8_t *out, size_t max_out,
618
617
  return ret;
619
618
  }
620
619
 
621
- int rsa_verify_no_self_test(int hash_nid, const uint8_t *digest,
622
- size_t digest_len, const uint8_t *sig,
623
- size_t sig_len, RSA *rsa) {
624
- if (rsa->n == NULL || rsa->e == NULL) {
620
+ int bssl::rsa_verify_no_self_test(int hash_nid, const uint8_t *digest,
621
+ size_t digest_len, const uint8_t *sig,
622
+ size_t sig_len, RSA *rsa) {
623
+ auto *impl = FromOpaque(rsa);
624
+ if (impl->n == nullptr || impl->e == nullptr) {
625
625
  OPENSSL_PUT_ERROR(RSA, RSA_R_VALUE_MISSING);
626
626
  return 0;
627
627
  }
628
628
 
629
629
  const size_t rsa_size = RSA_size(rsa);
630
- uint8_t *buf = NULL;
630
+ uint8_t *buf = nullptr;
631
631
  int ret = 0;
632
- uint8_t *signed_msg = NULL;
632
+ uint8_t *signed_msg = nullptr;
633
633
  size_t signed_msg_len = 0, len;
634
634
  int signed_msg_is_alloced = 0;
635
635
 
@@ -651,8 +651,8 @@ int rsa_verify_no_self_test(int hash_nid, const uint8_t *digest,
651
651
  goto out;
652
652
  }
653
653
 
654
- // Check that no other information follows the hash value (FIPS 186-4 Section
655
- // 5.5) and it matches the expected hash.
654
+ // Check that no other information follows the hash value (FIPS 186-5 Section
655
+ // 5.4) and it matches the expected hash.
656
656
  if (len != signed_msg_len || OPENSSL_memcmp(buf, signed_msg, len) != 0) {
657
657
  OPENSSL_PUT_ERROR(RSA, RSA_R_BAD_SIGNATURE);
658
658
  goto out;
@@ -670,7 +670,7 @@ out:
670
670
 
671
671
  int RSA_verify(int hash_nid, const uint8_t *digest, size_t digest_len,
672
672
  const uint8_t *sig, size_t sig_len, RSA *rsa) {
673
- boringssl_ensure_rsa_self_test();
673
+ boringssl_ensure_rsa_verify_self_test();
674
674
  return rsa_verify_no_self_test(hash_nid, digest, digest_len, sig, sig_len,
675
675
  rsa);
676
676
  }
@@ -685,7 +685,7 @@ int RSA_verify_pss_mgf1(RSA *rsa, const uint8_t *digest, size_t digest_len,
685
685
 
686
686
  size_t em_len = RSA_size(rsa);
687
687
  uint8_t *em = reinterpret_cast<uint8_t *>(OPENSSL_malloc(em_len));
688
- if (em == NULL) {
688
+ if (em == nullptr) {
689
689
  return 0;
690
690
  }
691
691
 
@@ -715,24 +715,24 @@ static int check_mod_inverse(int *out_ok, const BIGNUM *a, const BIGNUM *ainv,
715
715
  return 1;
716
716
  }
717
717
 
718
- // Note |bn_mul_consttime| and |bn_div_consttime| do not scale linearly, but
719
- // checking |ainv| is in range bounds the running time, assuming |m|'s bounds
718
+ // Note `bn_mul_consttime` and `bn_div_consttime` do not scale linearly, but
719
+ // checking `ainv` is in range bounds the running time, assuming `m`'s bounds
720
720
  // were checked by the caller.
721
- BN_CTX_start(ctx);
721
+ BN_CTXScope scope(ctx);
722
722
  BIGNUM *tmp = BN_CTX_get(ctx);
723
- int ret = tmp != NULL && bn_mul_consttime(tmp, a, ainv, ctx) &&
724
- bn_div_consttime(NULL, tmp, tmp, m, m_min_bits, ctx);
725
- if (ret) {
726
- *out_ok = constant_time_declassify_int(BN_is_one(tmp));
723
+ if (tmp == nullptr || //
724
+ !bn_mul_consttime(tmp, a, ainv, ctx) ||
725
+ !bn_div_consttime(nullptr, tmp, tmp, m, m_min_bits, ctx)) {
726
+ return 0;
727
727
  }
728
- BN_CTX_end(ctx);
729
- return ret;
728
+ *out_ok = constant_time_declassify_int(BN_is_one(tmp));
729
+ return 1;
730
730
  }
731
731
 
732
732
  int RSA_check_key(const RSA *key) {
733
733
  // TODO(davidben): RSA key initialization is spread across
734
- // |rsa_check_public_key|, |RSA_check_key|, |freeze_private_key|, and
735
- // |BN_MONT_CTX_set_locked| as a result of API issues. See
734
+ // `rsa_check_public_key`, `RSA_check_key`, `freeze_private_key`, and
735
+ // `BN_MONT_CTX_set_locked` as a result of API issues. See
736
736
  // https://crbug.com/boringssl/316. As a result, we inconsistently check RSA
737
737
  // invariants. We should fix this and integrate that logic.
738
738
 
@@ -740,32 +740,34 @@ int RSA_check_key(const RSA *key) {
740
740
  return 0;
741
741
  }
742
742
 
743
- if ((key->p != NULL) != (key->q != NULL)) {
743
+ auto *impl = FromOpaque(key);
744
+ if ((impl->p != nullptr) != (impl->q != nullptr)) {
744
745
  OPENSSL_PUT_ERROR(RSA, RSA_R_ONLY_ONE_OF_P_Q_GIVEN);
745
746
  return 0;
746
747
  }
747
748
 
748
- // |key->d| must be bounded by |key->n|. This ensures bounds on |RSA_bits|
749
+ // `impl->d` must be bounded by `impl->n`. This ensures bounds on `RSA_bits`
749
750
  // translate to bounds on the running time of private key operations.
750
- if (key->d != NULL &&
751
- (BN_is_negative(key->d) || BN_cmp(key->d, key->n) >= 0)) {
751
+ if (impl->d != nullptr && (BN_is_negative(impl->d.get()) ||
752
+ BN_cmp(impl->d.get(), impl->n.get()) >= 0)) {
752
753
  OPENSSL_PUT_ERROR(RSA, RSA_R_D_OUT_OF_RANGE);
753
754
  return 0;
754
755
  }
755
756
 
756
- if (key->d == NULL || key->p == NULL) {
757
+ if (impl->d == nullptr || impl->p == nullptr) {
757
758
  // For a public key, or without p and q, there's nothing that can be
758
759
  // checked.
759
760
  return 1;
760
761
  }
761
762
 
762
763
  BN_CTX *ctx = BN_CTX_new();
763
- if (ctx == NULL) {
764
+ if (ctx == nullptr) {
764
765
  return 0;
765
766
  }
766
767
 
767
768
  BIGNUM tmp, de, pm1, qm1, dmp1, dmq1;
768
- int ok = 0, has_crt_values;
769
+ int ok = 0;
770
+ bool has_crt_values;
769
771
  unsigned pm1_bits, qm1_bits;
770
772
  BN_init(&tmp);
771
773
  BN_init(&de);
@@ -775,21 +777,21 @@ int RSA_check_key(const RSA *key) {
775
777
  BN_init(&dmq1);
776
778
 
777
779
  // Check that p * q == n. Before we multiply, we check that p and q are in
778
- // bounds, to avoid a DoS vector in |bn_mul_consttime| below. Note that
779
- // n was bound by |rsa_check_public_key|. This also implicitly checks p and q
780
+ // bounds, to avoid a DoS vector in `bn_mul_consttime` below. Note that
781
+ // n was bound by `rsa_check_public_key`. This also implicitly checks p and q
780
782
  // are odd, which is a necessary condition for Montgomery reduction.
781
- if (BN_is_negative(key->p) ||
782
- constant_time_declassify_int(BN_cmp(key->p, key->n) >= 0) ||
783
- BN_is_negative(key->q) ||
784
- constant_time_declassify_int(BN_cmp(key->q, key->n) >= 0)) {
783
+ if (BN_is_negative(impl->p.get()) ||
784
+ constant_time_declassify_int(BN_cmp(impl->p.get(), impl->n.get()) >= 0) ||
785
+ BN_is_negative(impl->q.get()) ||
786
+ constant_time_declassify_int(BN_cmp(impl->q.get(), impl->n.get()) >= 0)) {
785
787
  OPENSSL_PUT_ERROR(RSA, RSA_R_N_NOT_EQUAL_P_Q);
786
788
  goto out;
787
789
  }
788
- if (!bn_mul_consttime(&tmp, key->p, key->q, ctx)) {
790
+ if (!bn_mul_consttime(&tmp, impl->p.get(), impl->q.get(), ctx)) {
789
791
  OPENSSL_PUT_ERROR(RSA, ERR_LIB_BN);
790
792
  goto out;
791
793
  }
792
- if (BN_cmp(&tmp, key->n) != 0) {
794
+ if (BN_cmp(&tmp, impl->n.get()) != 0) {
793
795
  OPENSSL_PUT_ERROR(RSA, RSA_R_N_NOT_EQUAL_P_Q);
794
796
  goto out;
795
797
  }
@@ -798,16 +800,16 @@ int RSA_check_key(const RSA *key) {
798
800
  // may be unreduced because other implementations use the Euler totient. We
799
801
  // simply check that d * e is one mod p-1 and mod q-1. Note d and e were bound
800
802
  // by earlier checks in this function.
801
- if (!bn_usub_consttime(&pm1, key->p, BN_value_one()) ||
802
- !bn_usub_consttime(&qm1, key->q, BN_value_one())) {
803
+ if (!bn_usub_consttime(&pm1, impl->p.get(), BN_value_one()) ||
804
+ !bn_usub_consttime(&qm1, impl->q.get(), BN_value_one())) {
803
805
  OPENSSL_PUT_ERROR(RSA, ERR_LIB_BN);
804
806
  goto out;
805
807
  }
806
808
  pm1_bits = BN_num_bits(&pm1);
807
809
  qm1_bits = BN_num_bits(&qm1);
808
- if (!bn_mul_consttime(&de, key->d, key->e, ctx) ||
809
- !bn_div_consttime(NULL, &tmp, &de, &pm1, pm1_bits, ctx) ||
810
- !bn_div_consttime(NULL, &de, &de, &qm1, qm1_bits, ctx)) {
810
+ if (!bn_mul_consttime(&de, impl->d.get(), impl->e.get(), ctx) ||
811
+ !bn_div_consttime(nullptr, &tmp, &de, &pm1, pm1_bits, ctx) ||
812
+ !bn_div_consttime(nullptr, &de, &de, &qm1, qm1_bits, ctx)) {
811
813
  OPENSSL_PUT_ERROR(RSA, ERR_LIB_BN);
812
814
  goto out;
813
815
  }
@@ -818,21 +820,23 @@ int RSA_check_key(const RSA *key) {
818
820
  goto out;
819
821
  }
820
822
 
821
- has_crt_values = key->dmp1 != NULL;
822
- if (has_crt_values != (key->dmq1 != NULL) ||
823
- has_crt_values != (key->iqmp != NULL)) {
823
+ has_crt_values = impl->dmp1 != nullptr;
824
+ if (has_crt_values != (impl->dmq1 != nullptr) ||
825
+ has_crt_values != (impl->iqmp != nullptr)) {
824
826
  OPENSSL_PUT_ERROR(RSA, RSA_R_INCONSISTENT_SET_OF_CRT_VALUES);
825
827
  goto out;
826
828
  }
827
829
 
828
830
  if (has_crt_values) {
829
831
  int dmp1_ok, dmq1_ok, iqmp_ok;
830
- if (!check_mod_inverse(&dmp1_ok, key->e, key->dmp1, &pm1, pm1_bits, ctx) ||
831
- !check_mod_inverse(&dmq1_ok, key->e, key->dmq1, &qm1, qm1_bits, ctx) ||
832
- // |p| is odd, so |pm1| and |p| have the same bit width. If they didn't,
832
+ if (!check_mod_inverse(&dmp1_ok, impl->e.get(), impl->dmp1.get(), &pm1,
833
+ pm1_bits, ctx) ||
834
+ !check_mod_inverse(&dmq1_ok, impl->e.get(), impl->dmq1.get(), &qm1,
835
+ qm1_bits, ctx) ||
836
+ // `p` is odd, so `pm1` and `p` have the same bit width. If they didn't,
833
837
  // we only need a lower bound anyway.
834
- !check_mod_inverse(&iqmp_ok, key->q, key->iqmp, key->p, pm1_bits,
835
- ctx)) {
838
+ !check_mod_inverse(&iqmp_ok, impl->q.get(), impl->iqmp.get(),
839
+ impl->p.get(), pm1_bits, ctx)) {
836
840
  OPENSSL_PUT_ERROR(RSA, ERR_LIB_BN);
837
841
  goto out;
838
842
  }
@@ -878,8 +882,8 @@ static const BN_ULONG kSmallFactorsLimbs[] = {TOBN(0xc4309333, 0x3ef4e3e1),
878
882
  0x000017b1};
879
883
 
880
884
  DEFINE_LOCAL_DATA(BIGNUM, g_small_factors) {
881
- out->d = (BN_ULONG *)kSmallFactorsLimbs;
882
- out->width = OPENSSL_ARRAY_SIZE(kSmallFactorsLimbs);
885
+ out->d = const_cast<BN_ULONG *>(kSmallFactorsLimbs);
886
+ out->width = std::size(kSmallFactorsLimbs);
883
887
  out->dmax = out->width;
884
888
  out->neg = 0;
885
889
  out->flags = BN_FLG_STATIC_DATA;
@@ -891,7 +895,7 @@ int RSA_check_fips(RSA *key) {
891
895
  }
892
896
 
893
897
  BN_CTX *ctx = BN_CTX_new();
894
- if (ctx == NULL) {
898
+ if (ctx == nullptr) {
895
899
  return 0;
896
900
  }
897
901
 
@@ -902,23 +906,24 @@ int RSA_check_fips(RSA *key) {
902
906
 
903
907
  // Perform partial public key validation of RSA keys (SP 800-89 5.3.3).
904
908
  // Although this is not for primality testing, SP 800-89 cites an RSA
905
- // primality testing algorithm, so we use |BN_prime_checks_for_generation| to
909
+ // primality testing algorithm, so we use `BN_prime_checks_for_generation` to
906
910
  // match. This is only a plausibility test and we expect the value to be
907
911
  // composite, so too few iterations will cause us to reject the key, not use
908
912
  // an implausible one.
909
913
  //
910
- // |key->e| may be nullptr if created with |RSA_new_private_key_no_e|.
914
+ // `key->e` may be nullptr if created with `RSA_new_private_key_no_e`.
911
915
  enum bn_primality_result_t primality_result;
912
- if (key->e == nullptr || //
913
- BN_num_bits(key->e) <= 16 || //
914
- BN_num_bits(key->e) > 256 || //
915
- !BN_is_odd(key->n) || //
916
- !BN_is_odd(key->e) ||
917
- !BN_gcd(&small_gcd, key->n, g_small_factors(), ctx) ||
916
+ auto *impl = FromOpaque(key);
917
+ if (impl->e.get() == nullptr || //
918
+ BN_num_bits(impl->e.get()) <= 16 || //
919
+ BN_num_bits(impl->e.get()) > 256 || //
920
+ !BN_is_odd(impl->n.get()) || //
921
+ !BN_is_odd(impl->e.get()) ||
922
+ !BN_gcd(&small_gcd, impl->n.get(), g_small_factors(), ctx) ||
918
923
  !BN_is_one(&small_gcd) ||
919
- !BN_enhanced_miller_rabin_primality_test(&primality_result, key->n,
924
+ !BN_enhanced_miller_rabin_primality_test(&primality_result, impl->n.get(),
920
925
  BN_prime_checks_for_generation,
921
- ctx, NULL) ||
926
+ ctx, nullptr) ||
922
927
  primality_result != bn_non_prime_power_composite) {
923
928
  OPENSSL_PUT_ERROR(RSA, RSA_R_PUBLIC_KEY_VALIDATION_FAILED);
924
929
  ret = 0;
@@ -927,20 +932,20 @@ int RSA_check_fips(RSA *key) {
927
932
  BN_free(&small_gcd);
928
933
  BN_CTX_free(ctx);
929
934
 
930
- if (!ret || key->d == NULL || key->p == NULL) {
935
+ if (!ret || impl->d == nullptr || impl->p == nullptr) {
931
936
  // On a failure or on only a public key, there's nothing else can be
932
937
  // checked.
933
938
  return ret;
934
939
  }
935
940
 
936
941
  // FIPS pairwise consistency test (FIPS 140-2 4.9.2). Per FIPS 140-2 IG,
937
- // section 9.9, it is not known whether |rsa| will be used for signing or
942
+ // section 9.9, it is not known whether `rsa` will be used for signing or
938
943
  // encryption, so either pair-wise consistency self-test is acceptable. We
939
944
  // perform a signing test.
940
945
  uint8_t data[32] = {0};
941
946
  unsigned sig_len = RSA_size(key);
942
947
  uint8_t *sig = reinterpret_cast<uint8_t *>(OPENSSL_malloc(sig_len));
943
- if (sig == NULL) {
948
+ if (sig == nullptr) {
944
949
  return 0;
945
950
  }
946
951
 
@@ -963,21 +968,29 @@ cleanup:
963
968
  return ret;
964
969
  }
965
970
 
966
- int rsa_private_transform_no_self_test(RSA *rsa, uint8_t *out,
967
- const uint8_t *in, size_t len) {
968
- if (rsa->meth->private_transform) {
969
- return rsa->meth->private_transform(rsa, out, in, len);
971
+ int bssl::rsa_private_transform_no_self_test(RSA *rsa, uint8_t *out,
972
+ const uint8_t *in, size_t len) {
973
+ auto *impl = FromOpaque(rsa);
974
+
975
+ if (impl->meth->private_transform) {
976
+ return impl->meth->private_transform(rsa, out, in, len);
970
977
  }
971
978
 
972
979
  return rsa_default_private_transform(rsa, out, in, len);
973
980
  }
974
981
 
975
- int rsa_private_transform(RSA *rsa, uint8_t *out, const uint8_t *in,
976
- size_t len) {
977
- boringssl_ensure_rsa_self_test();
982
+ int bssl::rsa_private_transform(RSA *rsa, uint8_t *out, const uint8_t *in,
983
+ size_t len) {
984
+ boringssl_ensure_rsa_sign_self_test();
978
985
  return rsa_private_transform_no_self_test(rsa, out, in, len);
979
986
  }
980
987
 
981
- int RSA_flags(const RSA *rsa) { return rsa->flags; }
988
+ int RSA_flags(const RSA *rsa) {
989
+ auto *impl = FromOpaque(rsa);
990
+ return impl->flags;
991
+ }
982
992
 
983
- int RSA_test_flags(const RSA *rsa, int flags) { return rsa->flags & flags; }
993
+ int RSA_test_flags(const RSA *rsa, int flags) {
994
+ auto *impl = FromOpaque(rsa);
995
+ return impl->flags & flags;
996
+ }