grpc 1.84.1 → 1.85.0.pre1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

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