grpc 1.84.0 → 1.85.0.pre1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1004) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +40 -27
  3. data/include/grpc/event_engine/memory_allocator.h +1 -0
  4. data/include/grpc/grpc.h +3 -0
  5. data/include/grpc/grpc_security_constants.h +2 -0
  6. data/include/grpc/impl/channel_arg_names.h +4 -0
  7. data/src/core/call/call_filters.h +10 -10
  8. data/src/core/{lib/security/authorization → call}/evaluate_args.cc +22 -1
  9. data/src/core/{lib/security/authorization → call}/evaluate_args.h +19 -5
  10. data/src/core/call/filter_fusion.h +15 -15
  11. data/src/core/call/interception_chain.h +3 -3
  12. data/src/core/call/metadata_batch.cc +1 -0
  13. data/src/core/call/metadata_batch.h +45 -33
  14. data/src/core/call/parsed_metadata.h +3 -3
  15. data/src/core/call/request_buffer.cc +6 -6
  16. data/src/core/call/request_buffer.h +1 -1
  17. data/src/core/channelz/channel_trace.cc +5 -5
  18. data/src/core/channelz/channel_trace.h +1 -1
  19. data/src/core/channelz/channelz.cc +9 -9
  20. data/src/core/channelz/channelz.h +12 -12
  21. data/src/core/channelz/channelz_registry.cc +10 -10
  22. data/src/core/channelz/ztrace_collector.h +5 -5
  23. data/src/core/client_channel/client_channel.cc +4 -4
  24. data/src/core/client_channel/client_channel_filter.cc +14 -14
  25. data/src/core/client_channel/global_subchannel_pool.cc +4 -4
  26. data/src/core/client_channel/subchannel.cc +24 -23
  27. data/src/core/client_channel/subchannel_stream_client.cc +5 -5
  28. data/src/core/credentials/call/external/aws_external_account_credentials.cc +7 -7
  29. data/src/core/credentials/call/external/aws_request_signer.cc +16 -0
  30. data/src/core/credentials/call/external/external_account_credentials.cc +4 -4
  31. data/src/core/credentials/call/regional_access_boundary_fetcher.cc +9 -9
  32. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +4 -4
  33. data/src/core/credentials/transport/google_default/google_default_credentials.cc +3 -3
  34. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +1 -1
  35. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +9 -9
  36. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +1 -1
  37. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +6 -6
  38. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +3 -3
  39. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +4 -4
  40. data/src/core/credentials/transport/tls/ssl_utils.cc +10 -0
  41. data/src/core/credentials/transport/tls/tls_security_connector.cc +10 -10
  42. data/src/core/credentials/transport/tls/tls_security_connector.h +6 -6
  43. data/src/core/credentials/transport/tls/tls_utils.h +9 -0
  44. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +1 -1
  45. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
  46. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
  47. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +1 -1
  48. data/src/core/ext/filters/http/message_compress/compression_filter.cc +15 -0
  49. data/src/core/ext/filters/rbac/rbac_filter.h +1 -1
  50. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +5 -5
  51. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +30 -21
  52. data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -11
  53. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +14 -11
  54. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
  55. data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -4
  56. data/src/core/ext/transport/chttp2/transport/frame.h +9 -0
  57. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -9
  58. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -2
  59. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +16 -18
  60. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +2 -1
  61. data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +277 -189
  62. data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +40 -17
  63. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +12 -24
  64. data/src/core/ext/transport/chttp2/transport/http2_transport.h +3 -29
  65. data/src/core/ext/transport/chttp2/transport/internal.h +2 -2
  66. data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
  67. data/src/core/ext/transport/chttp2/transport/read_context.h +96 -3
  68. data/src/core/ext/transport/chttp2/transport/reclaimer.cc +32 -0
  69. data/src/core/ext/transport/chttp2/transport/reclaimer.h +64 -0
  70. data/src/core/ext/transport/chttp2/transport/security_frame.h +8 -8
  71. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +17 -9
  72. data/src/core/ext/transport/chttp2/transport/write_cycle.h +23 -3
  73. data/src/core/ext/transport/inproc/inproc_transport.cc +5 -5
  74. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb.h +137 -73
  75. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb_minitable.c +45 -25
  76. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb.h +6 -6
  77. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.c +4 -4
  78. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.h +5 -5
  79. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb.h +46 -26
  80. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.c +17 -14
  81. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.h +5 -5
  82. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb.h +5 -5
  83. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.c +3 -3
  84. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.h +5 -5
  85. data/src/core/ext/upb-gen/grpc/health/v1/health.upb.h +329 -0
  86. data/src/core/ext/upb-gen/grpc/health/v1/health.upb_minitable.c +128 -0
  87. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/health/v1/health.upb_minitable.h +8 -5
  88. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb.h +5 -5
  89. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.c +3 -3
  90. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.h +5 -5
  91. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb.h +185 -23
  92. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.c +20 -12
  93. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.h +5 -5
  94. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb.h +58 -42
  95. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.c +17 -12
  96. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.h +5 -5
  97. data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +567 -549
  98. data/src/core/ext/upbdefs-gen/grpc/lookup/v1/rls_config.upbdefs.c +182 -0
  99. data/src/core/ext/upbdefs-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upbdefs.h +14 -14
  100. data/src/core/filter/ext_proc/ext_proc_filter.cc +1603 -46
  101. data/src/core/filter/ext_proc/ext_proc_filter.h +55 -22
  102. data/src/core/filter/ext_proc/ext_proc_messages.cc +106 -51
  103. data/src/core/filter/ext_proc/ext_proc_messages.h +36 -9
  104. data/src/core/handshaker/handshaker.cc +4 -4
  105. data/src/core/handshaker/http_connect/http_connect_client_handshaker.cc +3 -3
  106. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +10 -10
  107. data/src/core/handshaker/security/secure_endpoint.cc +13 -13
  108. data/src/core/handshaker/security/security_handshaker.cc +6 -6
  109. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +4 -4
  110. data/src/core/lib/channel/channel_args.cc +20 -0
  111. data/src/core/lib/channel/channel_args.h +17 -17
  112. data/src/core/lib/channel/promise_based_filter.cc +2 -2
  113. data/src/core/lib/channel/promise_based_filter.h +66 -27
  114. data/src/core/lib/debug/trace_flags.cc +2 -0
  115. data/src/core/lib/debug/trace_flags.h +1 -0
  116. data/src/core/lib/event_engine/ares_resolver.cc +14 -14
  117. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +7 -7
  118. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +4 -4
  119. data/src/core/lib/event_engine/default_event_engine.cc +5 -5
  120. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +9 -9
  121. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +16 -14
  122. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +6 -6
  123. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +3 -3
  124. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1 -1
  125. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +7 -7
  126. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +17 -17
  127. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +3 -3
  128. data/src/core/lib/event_engine/posix_engine/timer.cc +5 -5
  129. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +5 -5
  130. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +3 -3
  131. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +1 -1
  132. data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
  133. data/src/core/lib/event_engine/thread_pool/thread_count.h +3 -3
  134. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +50 -21
  135. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +3 -3
  136. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +3 -3
  137. data/src/core/lib/event_engine/windows/windows_engine.cc +15 -15
  138. data/src/core/lib/event_engine/windows/windows_listener.cc +6 -6
  139. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +6 -6
  140. data/src/core/lib/experiments/experiments.cc +48 -0
  141. data/src/core/lib/experiments/experiments.h +24 -0
  142. data/src/core/lib/iomgr/buffer_list.cc +3 -3
  143. data/src/core/lib/iomgr/buffer_list.h +1 -1
  144. data/src/core/lib/iomgr/combiner.cc +0 -1
  145. data/src/core/lib/iomgr/ev_apple.cc +4 -4
  146. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
  147. data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
  148. data/src/core/lib/iomgr/tcp_posix.cc +7 -7
  149. data/src/core/lib/promise/activity.cc +1 -1
  150. data/src/core/lib/promise/activity.h +1 -1
  151. data/src/core/lib/promise/arena_promise.h +7 -7
  152. data/src/core/lib/promise/detail/promise_factory.h +8 -8
  153. data/src/core/lib/promise/detail/promise_like.h +4 -4
  154. data/src/core/lib/promise/inter_activity_latch.h +6 -6
  155. data/src/core/lib/promise/inter_activity_pipe.h +1 -1
  156. data/src/core/lib/promise/observable.h +3 -3
  157. data/src/core/lib/promise/party.cc +1 -1
  158. data/src/core/lib/promise/try_seq.h +2 -2
  159. data/src/core/lib/resource_quota/arena.h +3 -3
  160. data/src/core/lib/resource_quota/memory_quota.cc +16 -16
  161. data/src/core/lib/resource_quota/memory_quota.h +1 -1
  162. data/src/core/lib/resource_quota/thread_quota.cc +3 -3
  163. data/src/core/lib/security/authorization/audit_logging.cc +5 -5
  164. data/src/core/lib/security/authorization/authorization_engine.h +1 -1
  165. data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -1
  166. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
  167. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  168. data/src/core/lib/security/authorization/matchers.h +1 -1
  169. data/src/core/lib/surface/call.cc +8 -7
  170. data/src/core/lib/surface/call.h +3 -3
  171. data/src/core/lib/surface/call_utils.h +4 -0
  172. data/src/core/lib/surface/channel.cc +1 -1
  173. data/src/core/lib/surface/channel.h +1 -1
  174. data/src/core/lib/surface/channel_init.cc +1 -1
  175. data/src/core/lib/surface/init.cc +7 -7
  176. data/src/core/lib/surface/lame_client.cc +1 -1
  177. data/src/core/lib/surface/legacy_channel.cc +2 -2
  178. data/src/core/lib/surface/version.cc +1 -1
  179. data/src/core/lib/transport/transport_framing_endpoint_extension.h +3 -3
  180. data/src/core/load_balancing/autosharding/autosharding.cc +931 -0
  181. data/src/core/load_balancing/autosharding/autosharding.h +78 -0
  182. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -2
  183. data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
  184. data/src/core/load_balancing/grpclb/load_balancer_api.h +3 -1
  185. data/src/core/load_balancing/health_check_client.cc +7 -7
  186. data/src/core/load_balancing/lb_policy.cc +1 -1
  187. data/src/core/load_balancing/oob_backend_metric.cc +5 -5
  188. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
  189. data/src/core/load_balancing/ring_hash/ring_hash.cc +109 -37
  190. data/src/core/load_balancing/rls/rls.cc +23 -17
  191. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +10 -10
  192. data/src/core/load_balancing/xds/cds.cc +6 -5
  193. data/src/core/load_balancing/xds/xds_cluster_impl.cc +2 -2
  194. data/src/core/load_balancing/xds/xds_override_host.cc +10 -10
  195. data/src/core/mitigation_engine/mitigation_engine.h +28 -4
  196. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -0
  197. data/src/core/resolver/dns/dns_resolver.cc +7 -7
  198. data/src/core/resolver/fake/fake_resolver.cc +5 -5
  199. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +38 -30
  200. data/src/core/server/server.cc +30 -30
  201. data/src/core/server/server.h +4 -3
  202. data/src/core/server/server_config_selector_filter.cc +3 -3
  203. data/src/core/server/xds_server_config_fetcher_legacy.cc +15 -15
  204. data/src/core/telemetry/default_tcp_tracer.cc +1 -1
  205. data/src/core/telemetry/instrument.cc +30 -16
  206. data/src/core/telemetry/instrument.h +3 -3
  207. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
  208. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -4
  209. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +2 -2
  210. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  211. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -1
  212. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +5 -5
  213. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +3 -3
  214. data/src/core/tsi/ssl_transport_security.cc +46 -13
  215. data/src/core/tsi/ssl_transport_security.h +7 -0
  216. data/src/core/tsi/ssl_transport_security_utils.cc +16 -6
  217. data/src/core/util/event_log.cc +3 -3
  218. data/src/core/util/http_client/httpcli.cc +5 -5
  219. data/src/core/util/http_client/httpcli.h +1 -1
  220. data/src/core/util/json/json_object_loader.cc +7 -0
  221. data/src/core/util/json/json_object_loader.h +17 -2
  222. data/src/core/util/latent_see.cc +123 -36
  223. data/src/core/util/latent_see.h +14 -1
  224. data/src/core/util/mpscq.cc +1 -1
  225. data/src/core/util/notification.h +4 -4
  226. data/src/core/util/sync.h +20 -6
  227. data/src/core/util/table.h +20 -22
  228. data/src/core/util/work_serializer.cc +2 -2
  229. data/src/core/xds/grpc/blackboard.cc +4 -3
  230. data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
  231. data/src/core/xds/grpc/streaming_call_promise_wrapper.cc +181 -0
  232. data/src/core/xds/grpc/streaming_call_promise_wrapper.h +213 -0
  233. data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +2 -2
  234. data/src/core/xds/grpc/xds_client_grpc.cc +8 -8
  235. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
  236. data/src/core/xds/grpc/xds_endpoint.cc +1 -1
  237. data/src/core/xds/grpc/xds_endpoint_parser.cc +11 -0
  238. data/src/core/xds/grpc/xds_grpc_service_parser.cc +12 -10
  239. data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +17 -14
  240. data/src/core/xds/grpc/xds_matcher.h +2 -2
  241. data/src/core/xds/grpc/xds_transport_grpc.cc +125 -85
  242. data/src/core/xds/grpc/xds_transport_grpc.h +19 -4
  243. data/src/core/xds/xds_client/lrs_client.cc +22 -19
  244. data/src/core/xds/xds_client/xds_client.cc +19 -16
  245. data/src/core/xds/xds_client/xds_transport.h +49 -3
  246. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  247. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
  248. data/src/ruby/lib/grpc/version.rb +1 -1
  249. data/src/ruby/pb/README.md +1 -1
  250. data/src/ruby/pb/generate_proto_ruby.sh +1 -1
  251. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +34 -2
  252. data/third_party/abseil-cpp/absl/algorithm/container.h +345 -147
  253. data/third_party/abseil-cpp/absl/base/attributes.h +67 -44
  254. data/third_party/abseil-cpp/absl/base/call_once.h +1 -0
  255. data/third_party/abseil-cpp/absl/base/casts.cc +61 -0
  256. data/third_party/abseil-cpp/absl/base/casts.h +135 -2
  257. data/third_party/abseil-cpp/absl/base/config.h +63 -41
  258. data/third_party/abseil-cpp/absl/base/fast_type_id.h +30 -2
  259. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
  260. data/third_party/abseil-cpp/absl/base/internal/hardening.h +136 -0
  261. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +6 -2
  262. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -4
  263. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
  264. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
  265. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
  266. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +26 -24
  267. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +74 -29
  268. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -11
  269. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
  270. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +5 -1
  271. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
  272. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
  273. data/third_party/abseil-cpp/absl/base/macros.h +76 -37
  274. data/third_party/abseil-cpp/absl/base/nullability.h +5 -5
  275. data/third_party/abseil-cpp/absl/base/optimization.h +4 -5
  276. data/third_party/abseil-cpp/absl/base/options.h +46 -18
  277. data/third_party/abseil-cpp/absl/base/policy_checks.h +5 -5
  278. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
  279. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
  280. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +7 -2
  281. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
  282. data/third_party/abseil-cpp/absl/container/btree_map.h +60 -10
  283. data/third_party/abseil-cpp/absl/container/btree_set.h +61 -15
  284. data/third_party/abseil-cpp/absl/container/fixed_array.h +19 -21
  285. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +49 -27
  286. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +50 -26
  287. data/third_party/abseil-cpp/absl/container/inlined_vector.h +42 -36
  288. data/third_party/abseil-cpp/absl/container/internal/btree.h +32 -24
  289. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +30 -22
  290. data/third_party/abseil-cpp/absl/container/internal/common.h +57 -5
  291. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
  292. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +40 -36
  293. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +119 -39
  294. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +14 -2
  295. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +14 -22
  296. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +52 -52
  297. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +7 -7
  298. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +7 -7
  299. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +32 -40
  300. data/third_party/abseil-cpp/absl/container/internal/layout.h +13 -13
  301. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +95 -72
  302. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +633 -365
  303. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1016 -749
  304. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +0 -1
  305. data/third_party/abseil-cpp/absl/container/node_hash_map.h +58 -35
  306. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +23 -6
  307. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
  308. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -6
  309. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
  310. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
  311. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
  312. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +304 -188
  313. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
  314. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
  315. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
  316. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
  317. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc +15 -1
  318. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -1
  319. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +12 -1
  320. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
  321. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -11
  322. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
  323. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
  324. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +6 -1
  325. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +14 -8
  326. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +48 -38
  327. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
  328. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +63 -118
  329. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +7 -47
  330. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +20 -2
  331. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +83 -149
  332. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
  333. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
  334. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
  335. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +8 -6
  336. data/third_party/abseil-cpp/absl/flags/declare.h +9 -0
  337. data/third_party/abseil-cpp/absl/flags/flag.h +2 -1
  338. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
  339. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +19 -18
  340. data/third_party/abseil-cpp/absl/flags/internal/flag.h +33 -34
  341. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
  342. data/third_party/abseil-cpp/absl/flags/marshalling.cc +1 -16
  343. data/third_party/abseil-cpp/absl/flags/marshalling.h +2 -28
  344. data/third_party/abseil-cpp/absl/flags/reflection.cc +11 -7
  345. data/third_party/abseil-cpp/absl/flags/usage_config.cc +2 -2
  346. data/third_party/abseil-cpp/absl/functional/any_invocable.h +22 -19
  347. data/third_party/abseil-cpp/absl/functional/bind_front.h +7 -1
  348. data/third_party/abseil-cpp/absl/functional/function_ref.h +125 -20
  349. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +43 -31
  350. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
  351. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +44 -6
  352. data/third_party/abseil-cpp/absl/hash/hash.h +1 -1
  353. data/third_party/abseil-cpp/absl/hash/internal/city.cc +39 -51
  354. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +379 -14
  355. data/third_party/abseil-cpp/absl/hash/internal/hash.h +457 -353
  356. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
  357. data/third_party/abseil-cpp/absl/log/internal/check_impl.h +2 -1
  358. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +4 -0
  359. data/third_party/abseil-cpp/absl/log/internal/check_op.h +128 -50
  360. data/third_party/abseil-cpp/absl/log/internal/conditions.h +38 -35
  361. data/third_party/abseil-cpp/absl/log/internal/log_impl.h +108 -110
  362. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +10 -6
  363. data/third_party/abseil-cpp/absl/log/internal/log_message.h +19 -1
  364. data/third_party/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
  365. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -1
  366. data/third_party/abseil-cpp/absl/log/internal/proto.cc +13 -0
  367. data/third_party/abseil-cpp/absl/log/internal/strip.h +30 -31
  368. data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
  369. data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
  370. data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +30 -30
  371. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
  372. data/third_party/abseil-cpp/absl/log/log.h +2 -2
  373. data/third_party/abseil-cpp/absl/log/log_entry.cc +263 -0
  374. data/third_party/abseil-cpp/absl/log/log_entry.h +2 -0
  375. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +0 -2
  376. data/third_party/abseil-cpp/absl/memory/memory.h +55 -5
  377. data/third_party/abseil-cpp/absl/meta/type_traits.h +161 -56
  378. data/third_party/abseil-cpp/absl/numeric/int128.h +41 -21
  379. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
  380. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
  381. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +32 -4
  382. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
  383. data/third_party/abseil-cpp/absl/random/beta_distribution.h +2 -2
  384. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
  385. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +1 -1
  386. data/third_party/abseil-cpp/absl/random/distributions.h +17 -17
  387. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -1
  388. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
  389. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.cc +2 -2
  390. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
  391. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
  392. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
  393. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
  394. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
  395. data/third_party/abseil-cpp/absl/random/internal/platform.h +0 -13
  396. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
  397. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
  398. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
  399. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +5 -31
  400. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +2 -1
  401. data/third_party/abseil-cpp/absl/random/internal/traits.h +21 -0
  402. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
  403. data/third_party/abseil-cpp/absl/random/mocking_access.h +74 -0
  404. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  405. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
  406. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +30 -4
  407. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +225 -63
  408. data/third_party/abseil-cpp/absl/status/status.cc +66 -70
  409. data/third_party/abseil-cpp/absl/status/status.h +254 -23
  410. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +3 -2
  411. data/third_party/abseil-cpp/absl/status/statusor.h +117 -137
  412. data/third_party/abseil-cpp/absl/strings/ascii.h +10 -6
  413. data/third_party/abseil-cpp/absl/strings/cord.cc +41 -17
  414. data/third_party/abseil-cpp/absl/strings/cord.h +26 -17
  415. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +4 -2
  416. data/third_party/abseil-cpp/absl/strings/escaping.cc +305 -125
  417. data/third_party/abseil-cpp/absl/strings/escaping.h +12 -2
  418. data/third_party/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
  419. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +2 -2
  420. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
  421. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +27 -21
  422. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +11 -19
  423. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
  424. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
  425. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
  426. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +2 -24
  427. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -36
  428. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
  429. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
  430. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
  431. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
  432. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +921 -231
  433. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -16
  434. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +16 -12
  435. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
  436. data/third_party/abseil-cpp/absl/strings/numbers.cc +477 -8
  437. data/third_party/abseil-cpp/absl/strings/numbers.h +29 -12
  438. data/third_party/abseil-cpp/absl/strings/resize_and_overwrite.h +198 -0
  439. data/third_party/abseil-cpp/absl/strings/str_cat.cc +96 -91
  440. data/third_party/abseil-cpp/absl/strings/str_cat.h +53 -13
  441. data/third_party/abseil-cpp/absl/strings/str_split.h +14 -9
  442. data/third_party/abseil-cpp/absl/strings/string_view.h +10 -716
  443. data/third_party/abseil-cpp/absl/strings/substitute.cc +24 -24
  444. data/third_party/abseil-cpp/absl/strings/substitute.h +2 -2
  445. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +1 -1
  446. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
  447. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +24 -3
  448. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
  449. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
  450. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
  451. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +41 -29
  452. data/third_party/abseil-cpp/absl/synchronization/mutex.h +199 -94
  453. data/third_party/abseil-cpp/absl/synchronization/notification.cc +5 -5
  454. data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
  455. data/third_party/abseil-cpp/absl/time/clock.cc +29 -30
  456. data/third_party/abseil-cpp/absl/time/clock.h +3 -0
  457. data/third_party/abseil-cpp/absl/time/duration.cc +2 -2
  458. data/third_party/abseil-cpp/absl/time/format.cc +3 -10
  459. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
  460. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +131 -91
  461. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
  462. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +185 -0
  463. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
  464. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
  465. data/third_party/abseil-cpp/absl/time/time.cc +4 -4
  466. data/third_party/abseil-cpp/absl/time/time.h +14 -13
  467. data/third_party/abseil-cpp/absl/types/compare.h +64 -63
  468. data/third_party/abseil-cpp/absl/types/internal/span.h +6 -6
  469. data/third_party/abseil-cpp/absl/types/optional.h +31 -4
  470. data/third_party/abseil-cpp/absl/types/optional_ref.h +295 -0
  471. data/third_party/{boringssl-with-bazel/crypto/x509/x_val.cc → abseil-cpp/absl/types/source_location.cc} +4 -14
  472. data/third_party/abseil-cpp/absl/types/source_location.h +172 -0
  473. data/third_party/abseil-cpp/absl/types/span.h +67 -38
  474. data/third_party/abseil-cpp/absl/types/variant.h +75 -18
  475. data/third_party/abseil-cpp/absl/utility/utility.h +112 -16
  476. data/third_party/boringssl-with-bazel/crypto/aes/aes.cc +3 -0
  477. data/third_party/boringssl-with-bazel/crypto/armv8_feature_parsing.h +67 -0
  478. data/third_party/boringssl-with-bazel/crypto/asn1/a_bitstr.cc +143 -105
  479. data/third_party/boringssl-with-bazel/crypto/asn1/a_bool.cc +5 -8
  480. data/third_party/boringssl-with-bazel/crypto/asn1/a_d2i_fp.cc +3 -3
  481. data/third_party/boringssl-with-bazel/crypto/asn1/a_dup.cc +6 -6
  482. data/third_party/boringssl-with-bazel/crypto/asn1/a_gentm.cc +33 -12
  483. data/third_party/boringssl-with-bazel/crypto/asn1/a_i2d_fp.cc +7 -6
  484. data/third_party/boringssl-with-bazel/crypto/asn1/a_int.cc +80 -52
  485. data/third_party/boringssl-with-bazel/crypto/asn1/a_mbstr.cc +7 -4
  486. data/third_party/boringssl-with-bazel/crypto/asn1/a_object.cc +70 -72
  487. data/third_party/boringssl-with-bazel/crypto/asn1/a_strex.cc +38 -42
  488. data/third_party/boringssl-with-bazel/crypto/asn1/a_strnid.cc +41 -39
  489. data/third_party/boringssl-with-bazel/crypto/asn1/a_time.cc +59 -35
  490. data/third_party/boringssl-with-bazel/crypto/asn1/a_type.cc +275 -15
  491. data/third_party/boringssl-with-bazel/crypto/asn1/a_utctm.cc +32 -13
  492. data/third_party/boringssl-with-bazel/crypto/asn1/asn1_lib.cc +128 -30
  493. data/third_party/boringssl-with-bazel/crypto/asn1/asn_pack.cc +10 -10
  494. data/third_party/boringssl-with-bazel/crypto/asn1/f_int.cc +1 -1
  495. data/third_party/boringssl-with-bazel/crypto/asn1/f_string.cc +1 -1
  496. data/third_party/boringssl-with-bazel/crypto/asn1/internal.h +261 -115
  497. data/third_party/boringssl-with-bazel/crypto/asn1/posix_time.cc +8 -5
  498. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_dec.cc +373 -725
  499. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_enc.cc +211 -526
  500. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_fre.cc +22 -19
  501. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_new.cc +26 -24
  502. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_typ.cc +19 -5
  503. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_utl.cc +47 -51
  504. data/third_party/boringssl-with-bazel/crypto/base64/base64.cc +14 -15
  505. data/third_party/boringssl-with-bazel/crypto/bcm_support.h +7 -29
  506. data/third_party/boringssl-with-bazel/crypto/bio/bio.cc +234 -176
  507. data/third_party/boringssl-with-bazel/crypto/bio/bio_mem.cc +72 -86
  508. data/third_party/boringssl-with-bazel/crypto/bio/connect.cc +153 -199
  509. data/third_party/boringssl-with-bazel/crypto/bio/errno.cc +3 -1
  510. data/third_party/boringssl-with-bazel/crypto/bio/fd.cc +56 -55
  511. data/third_party/boringssl-with-bazel/crypto/bio/file.cc +70 -78
  512. data/third_party/boringssl-with-bazel/crypto/bio/hexdump.cc +6 -4
  513. data/third_party/boringssl-with-bazel/crypto/bio/internal.h +69 -17
  514. data/third_party/boringssl-with-bazel/crypto/bio/pair.cc +117 -136
  515. data/third_party/boringssl-with-bazel/crypto/bio/printf.cc +1 -1
  516. data/third_party/boringssl-with-bazel/crypto/bio/socket.cc +116 -50
  517. data/third_party/boringssl-with-bazel/crypto/bio/socket_helper.cc +53 -5
  518. data/third_party/boringssl-with-bazel/crypto/blake2/blake2.cc +9 -5
  519. data/third_party/boringssl-with-bazel/crypto/bn/bn_asn1.cc +2 -2
  520. data/third_party/boringssl-with-bazel/crypto/bn/convert.cc +56 -70
  521. data/third_party/boringssl-with-bazel/crypto/bn/div.cc +102 -0
  522. data/third_party/boringssl-with-bazel/crypto/bn/exponentiation.cc +26 -42
  523. data/third_party/boringssl-with-bazel/crypto/bn/sqrt.cc +93 -0
  524. data/third_party/boringssl-with-bazel/crypto/buf/buf.cc +6 -5
  525. data/third_party/boringssl-with-bazel/crypto/bytestring/asn1_compat.cc +6 -5
  526. data/third_party/boringssl-with-bazel/crypto/bytestring/ber.cc +22 -20
  527. data/third_party/boringssl-with-bazel/crypto/bytestring/cbb.cc +119 -59
  528. data/third_party/boringssl-with-bazel/crypto/bytestring/cbs.cc +115 -31
  529. data/third_party/boringssl-with-bazel/crypto/bytestring/internal.h +79 -24
  530. data/third_party/boringssl-with-bazel/crypto/bytestring/unicode.cc +2 -2
  531. data/third_party/boringssl-with-bazel/crypto/chacha/chacha.cc +5 -3
  532. data/third_party/boringssl-with-bazel/crypto/chacha/internal.h +23 -22
  533. data/third_party/boringssl-with-bazel/crypto/cipher/derive_key.cc +14 -18
  534. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesctrhmac.cc +73 -58
  535. data/third_party/boringssl-with-bazel/crypto/cipher/e_aeseax.cc +132 -70
  536. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesgcmsiv.cc +390 -249
  537. data/third_party/boringssl-with-bazel/crypto/cipher/e_chacha20poly1305.cc +200 -137
  538. data/third_party/boringssl-with-bazel/crypto/cipher/e_des.cc +45 -29
  539. data/third_party/boringssl-with-bazel/crypto/cipher/e_null.cc +9 -5
  540. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc2.cc +43 -28
  541. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc4.cc +7 -5
  542. data/third_party/boringssl-with-bazel/crypto/cipher/e_tls.cc +250 -237
  543. data/third_party/boringssl-with-bazel/crypto/cipher/get_cipher.cc +12 -12
  544. data/third_party/boringssl-with-bazel/crypto/cipher/internal.h +59 -59
  545. data/third_party/boringssl-with-bazel/crypto/cipher/tls_cbc.cc +111 -111
  546. data/third_party/boringssl-with-bazel/crypto/cms/cms.cc +48 -42
  547. data/third_party/boringssl-with-bazel/crypto/conf/conf.cc +69 -63
  548. data/third_party/boringssl-with-bazel/crypto/conf/internal.h +11 -12
  549. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_apple.cc +8 -5
  550. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_fuchsia.cc +6 -1
  551. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_linux.cc +7 -1
  552. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_openbsd.cc +7 -21
  553. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_sysreg.cc +15 -41
  554. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_win.cc +16 -3
  555. data/third_party/boringssl-with-bazel/crypto/cpu_arm_freebsd.cc +4 -2
  556. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.cc +54 -31
  557. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.h +79 -101
  558. data/third_party/boringssl-with-bazel/crypto/cpu_intel.cc +51 -45
  559. data/third_party/boringssl-with-bazel/crypto/crypto.cc +26 -55
  560. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519.cc +28 -25
  561. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519_tables.h +6 -6
  562. data/third_party/boringssl-with-bazel/crypto/curve25519/internal.h +14 -15
  563. data/third_party/boringssl-with-bazel/crypto/curve25519/spake25519.cc +23 -20
  564. data/third_party/boringssl-with-bazel/crypto/des/des.cc +27 -19
  565. data/third_party/boringssl-with-bazel/crypto/des/internal.h +4 -9
  566. data/third_party/boringssl-with-bazel/crypto/dh/dh_asn1.cc +34 -49
  567. data/third_party/boringssl-with-bazel/crypto/dh/params.cc +44 -41
  568. data/third_party/boringssl-with-bazel/crypto/digest/digest_extra.cc +87 -40
  569. data/third_party/boringssl-with-bazel/crypto/dsa/dsa.cc +237 -260
  570. data/third_party/boringssl-with-bazel/crypto/dsa/dsa_asn1.cc +100 -173
  571. data/third_party/boringssl-with-bazel/crypto/dsa/internal.h +23 -21
  572. data/third_party/boringssl-with-bazel/crypto/ec/ec_asn1.cc +181 -209
  573. data/third_party/boringssl-with-bazel/crypto/ec/ec_derive.cc +26 -28
  574. data/third_party/boringssl-with-bazel/crypto/ec/hash_to_curve.cc +265 -174
  575. data/third_party/boringssl-with-bazel/crypto/ec/internal.h +54 -18
  576. data/third_party/boringssl-with-bazel/crypto/ecdh/ecdh.cc +7 -5
  577. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_asn1.cc +50 -70
  578. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_p1363.cc +54 -0
  579. data/third_party/boringssl-with-bazel/crypto/engine/engine.cc +7 -7
  580. data/third_party/boringssl-with-bazel/crypto/err/err.cc +116 -105
  581. data/third_party/boringssl-with-bazel/crypto/err/internal.h +8 -21
  582. data/third_party/boringssl-with-bazel/crypto/evp/evp.cc +238 -166
  583. data/third_party/boringssl-with-bazel/crypto/evp/evp_asn1.cc +202 -234
  584. data/third_party/boringssl-with-bazel/crypto/evp/evp_ctx.cc +260 -159
  585. data/third_party/boringssl-with-bazel/crypto/evp/evp_kem.cc +82 -0
  586. data/third_party/boringssl-with-bazel/crypto/evp/internal.h +292 -137
  587. data/third_party/boringssl-with-bazel/crypto/evp/p_dh.cc +198 -25
  588. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa.cc +333 -0
  589. data/third_party/boringssl-with-bazel/crypto/evp/p_ec.cc +427 -42
  590. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519.cc +270 -14
  591. data/third_party/boringssl-with-bazel/crypto/evp/p_hkdf.cc +70 -102
  592. data/third_party/boringssl-with-bazel/crypto/evp/p_mldsa.cc +549 -0
  593. data/third_party/boringssl-with-bazel/crypto/evp/p_mlkem.cc +485 -0
  594. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa.cc +666 -158
  595. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519.cc +290 -28
  596. data/third_party/boringssl-with-bazel/crypto/evp/p_xwing.cc +273 -0
  597. data/third_party/boringssl-with-bazel/crypto/evp/pbkdf.cc +14 -7
  598. data/third_party/boringssl-with-bazel/crypto/evp/print.cc +34 -89
  599. data/third_party/boringssl-with-bazel/crypto/evp/scrypt.cc +23 -21
  600. data/third_party/boringssl-with-bazel/crypto/evp/sign.cc +23 -42
  601. data/third_party/boringssl-with-bazel/crypto/ex_data.cc +40 -41
  602. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes.cc.inc +34 -28
  603. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes_nohw.cc.inc +119 -121
  604. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cbc.cc.inc +16 -14
  605. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cfb.cc.inc +12 -10
  606. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ctr.cc.inc +7 -5
  607. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm.cc.inc +39 -29
  608. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm_nohw.cc.inc +15 -13
  609. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/internal.h +193 -177
  610. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/key_wrap.cc.inc +5 -3
  611. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/mode_wrappers.cc.inc +7 -3
  612. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ofb.cc.inc +7 -5
  613. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm.cc +24 -19
  614. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm_interface.h +512 -384
  615. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/add.cc.inc +7 -5
  616. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +63 -44
  617. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bn.cc.inc +40 -37
  618. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bytes.cc.inc +27 -22
  619. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/cmp.cc.inc +9 -7
  620. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/ctx.cc.inc +62 -126
  621. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div.cc.inc +92 -167
  622. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div_extra.cc.inc +15 -12
  623. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/exponentiation.cc.inc +96 -93
  624. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd.cc.inc +73 -92
  625. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd_extra.cc.inc +59 -71
  626. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/generic.cc.inc +54 -57
  627. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/internal.h +333 -255
  628. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/jacobi.cc.inc +12 -19
  629. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery.cc.inc +80 -95
  630. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery_inv.cc.inc +53 -96
  631. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/mul.cc.inc +58 -419
  632. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/prime.cc.inc +164 -213
  633. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/random.cc.inc +27 -26
  634. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.cc.inc +12 -10
  635. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.h +47 -49
  636. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/shift.cc.inc +14 -17
  637. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/sqrt.cc.inc +19 -108
  638. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/aead.cc.inc +427 -105
  639. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/cipher.cc.inc +412 -212
  640. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aes.cc.inc +230 -225
  641. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aesccm.cc.inc +115 -84
  642. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/internal.h +374 -27
  643. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cmac/cmac.cc.inc +28 -23
  644. data/third_party/boringssl-with-bazel/crypto/fipsmodule/delocate.h +36 -40
  645. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/check.cc.inc +68 -78
  646. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/dh.cc.inc +154 -196
  647. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/internal.h +24 -24
  648. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digest.cc.inc +40 -69
  649. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digests.cc.inc +13 -7
  650. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/internal.h +13 -11
  651. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/md32_common.h +86 -81
  652. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digestsign/digestsign.cc.inc +38 -34
  653. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec.cc.inc +187 -196
  654. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_key.cc.inc +196 -154
  655. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_montgomery.cc.inc +65 -125
  656. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/felem.cc.inc +85 -22
  657. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/internal.h +281 -287
  658. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/oct.cc.inc +23 -22
  659. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256.cc.inc +514 -573
  660. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256_internal.h +193 -0
  661. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/scalar.cc.inc +44 -39
  662. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple.cc.inc +58 -90
  663. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple_mul.cc.inc +39 -34
  664. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/util.cc.inc +6 -3
  665. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/wnaf.cc.inc +23 -20
  666. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdh/ecdh.cc.inc +6 -3
  667. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +47 -37
  668. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/internal.h +5 -10
  669. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/internal.h +38 -0
  670. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/jitter.cc.inc +463 -0
  671. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
  672. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hkdf/hkdf.cc.inc +8 -6
  673. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hmac/hmac.cc.inc +19 -16
  674. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/internal.h +41 -15
  675. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/keccak.cc.inc +172 -44
  676. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/fips_known_values.inc +5 -5
  677. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/mldsa.cc.inc +1632 -766
  678. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/fips_known_values.inc +5 -5
  679. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/mlkem.cc.inc +740 -436
  680. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
  681. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/ctrdrbg.cc.inc +240 -53
  682. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/internal.h +41 -26
  683. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/rand.cc.inc +221 -218
  684. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/internal.h +64 -67
  685. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/padding.cc.inc +49 -57
  686. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa.cc.inc +247 -234
  687. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa_impl.cc.inc +392 -692
  688. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/fips.cc.inc +10 -10
  689. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/self_check.cc.inc +479 -449
  690. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/internal.h +34 -11
  691. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +46 -43
  692. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/internal.h +61 -70
  693. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha1.cc.inc +27 -13
  694. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha256.cc.inc +46 -30
  695. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha512.cc.inc +47 -47
  696. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/address.h +98 -73
  697. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.cc.inc +108 -98
  698. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.h +14 -24
  699. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.cc.inc +94 -91
  700. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.h +19 -31
  701. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/params.h +156 -56
  702. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +318 -132
  703. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.cc.inc +234 -81
  704. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.h +20 -34
  705. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.cc.inc +97 -96
  706. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.h +10 -20
  707. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/internal.h +2 -16
  708. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/kdf.cc.inc +26 -26
  709. data/third_party/boringssl-with-bazel/crypto/fuzzer_mode.cc +5 -5
  710. data/third_party/boringssl-with-bazel/crypto/hpke/hpke.cc +461 -97
  711. data/third_party/boringssl-with-bazel/crypto/hrss/hrss.cc +153 -149
  712. data/third_party/boringssl-with-bazel/crypto/hrss/internal.h +9 -13
  713. data/third_party/boringssl-with-bazel/crypto/internal.h +531 -394
  714. data/third_party/boringssl-with-bazel/crypto/kyber/internal.h +117 -12
  715. data/third_party/boringssl-with-bazel/crypto/kyber/kyber.cc +59 -58
  716. data/third_party/boringssl-with-bazel/crypto/lhash/internal.h +38 -37
  717. data/third_party/boringssl-with-bazel/crypto/lhash/lhash.cc +68 -65
  718. data/third_party/boringssl-with-bazel/crypto/md4/md4.cc +19 -6
  719. data/third_party/boringssl-with-bazel/crypto/md5/internal.h +6 -9
  720. data/third_party/boringssl-with-bazel/crypto/md5/md5.cc +18 -6
  721. data/third_party/boringssl-with-bazel/crypto/mem.cc +61 -65
  722. data/third_party/boringssl-with-bazel/crypto/mem_internal.h +671 -0
  723. data/third_party/boringssl-with-bazel/crypto/mldsa/mldsa.cc +238 -32
  724. data/third_party/boringssl-with-bazel/crypto/mlkem/mlkem.cc +21 -65
  725. data/third_party/boringssl-with-bazel/crypto/obj/obj.cc +132 -157
  726. data/third_party/boringssl-with-bazel/crypto/obj/obj_dat.h +79 -1
  727. data/third_party/boringssl-with-bazel/crypto/obj/obj_xref.cc +14 -11
  728. data/third_party/boringssl-with-bazel/crypto/params_internal.h +30 -0
  729. data/third_party/boringssl-with-bazel/crypto/pem/internal.h +20 -15
  730. data/third_party/boringssl-with-bazel/crypto/pem/pem_all.cc +20 -19
  731. data/third_party/boringssl-with-bazel/crypto/pem/pem_info.cc +72 -76
  732. data/third_party/boringssl-with-bazel/crypto/pem/pem_lib.cc +215 -217
  733. data/third_party/boringssl-with-bazel/crypto/pem/pem_oth.cc +6 -6
  734. data/third_party/boringssl-with-bazel/crypto/pem/pem_pk8.cc +13 -13
  735. data/third_party/boringssl-with-bazel/crypto/pem/pem_pkey.cc +11 -11
  736. data/third_party/boringssl-with-bazel/crypto/pkcs7/internal.h +12 -17
  737. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7.cc +29 -27
  738. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7_x509.cc +55 -49
  739. data/third_party/boringssl-with-bazel/crypto/pkcs8/internal.h +21 -26
  740. data/third_party/boringssl-with-bazel/crypto/pkcs8/p5_pbev2.cc +33 -31
  741. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8.cc +73 -81
  742. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8_x509.cc +139 -138
  743. data/third_party/boringssl-with-bazel/crypto/poly1305/internal.h +3 -7
  744. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305.cc +5 -4
  745. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_arm.cc +43 -47
  746. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_vec.cc +29 -26
  747. data/third_party/boringssl-with-bazel/crypto/pool/internal.h +64 -20
  748. data/third_party/boringssl-with-bazel/crypto/pool/pool.cc +177 -157
  749. data/third_party/boringssl-with-bazel/crypto/rand/deterministic.cc +9 -16
  750. data/third_party/boringssl-with-bazel/crypto/rand/fork_detect.cc +70 -42
  751. data/third_party/boringssl-with-bazel/crypto/rand/forkunsafe.cc +7 -7
  752. data/third_party/boringssl-with-bazel/crypto/rand/getentropy.cc +6 -13
  753. data/third_party/boringssl-with-bazel/crypto/rand/internal.h +16 -4
  754. data/third_party/boringssl-with-bazel/crypto/rand/ios.cc +4 -11
  755. data/third_party/boringssl-with-bazel/crypto/rand/rand.cc +11 -9
  756. data/third_party/boringssl-with-bazel/crypto/rand/trusty.cc +4 -11
  757. data/third_party/boringssl-with-bazel/crypto/rand/urandom.cc +16 -195
  758. data/third_party/boringssl-with-bazel/crypto/rand/windows.cc +12 -19
  759. data/third_party/boringssl-with-bazel/crypto/refcount.cc +7 -17
  760. data/third_party/boringssl-with-bazel/crypto/rsa/internal.h +22 -7
  761. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_asn1.cc +199 -78
  762. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_crypt.cc +49 -50
  763. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_extra.cc +11 -0
  764. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_print.cc +4 -6
  765. data/third_party/boringssl-with-bazel/crypto/sha/sha1.cc +3 -0
  766. data/third_party/boringssl-with-bazel/crypto/sha/sha256.cc +3 -1
  767. data/third_party/boringssl-with-bazel/crypto/sha/sha512.cc +6 -4
  768. data/third_party/boringssl-with-bazel/crypto/siphash/siphash.cc +2 -0
  769. data/third_party/boringssl-with-bazel/crypto/slhdsa/slhdsa.cc +43 -6
  770. data/third_party/boringssl-with-bazel/crypto/spake2plus/internal.h +31 -31
  771. data/third_party/boringssl-with-bazel/crypto/spake2plus/spake2plus.cc +1 -1
  772. data/third_party/boringssl-with-bazel/crypto/stack/stack.cc +89 -130
  773. data/third_party/boringssl-with-bazel/crypto/thread.cc +14 -14
  774. data/third_party/boringssl-with-bazel/crypto/thread_none.cc +10 -13
  775. data/third_party/boringssl-with-bazel/crypto/thread_pthread.cc +22 -35
  776. data/third_party/boringssl-with-bazel/crypto/thread_win.cc +29 -40
  777. data/third_party/boringssl-with-bazel/crypto/trust_token/internal.h +81 -88
  778. data/third_party/boringssl-with-bazel/crypto/trust_token/pmbtoken.cc +160 -144
  779. data/third_party/boringssl-with-bazel/crypto/trust_token/trust_token.cc +96 -80
  780. data/third_party/boringssl-with-bazel/crypto/trust_token/voprf.cc +90 -87
  781. data/third_party/boringssl-with-bazel/crypto/x509/a_digest.cc +5 -5
  782. data/third_party/boringssl-with-bazel/crypto/x509/a_sign.cc +51 -48
  783. data/third_party/boringssl-with-bazel/crypto/x509/a_verify.cc +30 -34
  784. data/third_party/boringssl-with-bazel/crypto/x509/algorithm.cc +47 -16
  785. data/third_party/boringssl-with-bazel/crypto/x509/asn1_gen.cc +41 -43
  786. data/third_party/boringssl-with-bazel/crypto/x509/by_dir.cc +183 -237
  787. data/third_party/boringssl-with-bazel/crypto/x509/by_file.cc +29 -30
  788. data/third_party/boringssl-with-bazel/crypto/x509/internal.h +276 -180
  789. data/third_party/boringssl-with-bazel/crypto/x509/name_print.cc +15 -13
  790. data/third_party/boringssl-with-bazel/crypto/x509/policy.cc +415 -525
  791. data/third_party/boringssl-with-bazel/crypto/x509/rsa_pss.cc +94 -271
  792. data/third_party/boringssl-with-bazel/crypto/x509/t_crl.cc +11 -8
  793. data/third_party/boringssl-with-bazel/crypto/x509/t_req.cc +26 -23
  794. data/third_party/boringssl-with-bazel/crypto/x509/t_x509.cc +26 -22
  795. data/third_party/boringssl-with-bazel/crypto/x509/t_x509a.cc +3 -1
  796. data/third_party/boringssl-with-bazel/crypto/x509/v3_akey.cc +69 -76
  797. data/third_party/boringssl-with-bazel/crypto/x509/v3_akeya.cc +2 -2
  798. data/third_party/boringssl-with-bazel/crypto/x509/v3_alt.cc +112 -69
  799. data/third_party/boringssl-with-bazel/crypto/x509/v3_bcons.cc +15 -14
  800. data/third_party/boringssl-with-bazel/crypto/x509/v3_bitst.cc +16 -18
  801. data/third_party/boringssl-with-bazel/crypto/x509/v3_conf.cc +62 -67
  802. data/third_party/boringssl-with-bazel/crypto/x509/v3_cpols.cc +143 -170
  803. data/third_party/boringssl-with-bazel/crypto/x509/v3_crld.cc +121 -165
  804. data/third_party/boringssl-with-bazel/crypto/x509/v3_enum.cc +13 -12
  805. data/third_party/boringssl-with-bazel/crypto/x509/v3_extku.cc +17 -34
  806. data/third_party/boringssl-with-bazel/crypto/x509/v3_genn.cc +20 -10
  807. data/third_party/boringssl-with-bazel/crypto/x509/v3_ia5.cc +22 -18
  808. data/third_party/boringssl-with-bazel/crypto/x509/v3_info.cc +45 -47
  809. data/third_party/boringssl-with-bazel/crypto/x509/v3_int.cc +35 -33
  810. data/third_party/boringssl-with-bazel/crypto/x509/v3_lib.cc +106 -61
  811. data/third_party/boringssl-with-bazel/crypto/x509/v3_ncons.cc +642 -358
  812. data/third_party/boringssl-with-bazel/crypto/x509/v3_ocsp.cc +25 -22
  813. data/third_party/boringssl-with-bazel/crypto/x509/v3_pcons.cc +15 -14
  814. data/third_party/boringssl-with-bazel/crypto/x509/v3_pmaps.cc +16 -15
  815. data/third_party/boringssl-with-bazel/crypto/x509/v3_prn.cc +6 -6
  816. data/third_party/boringssl-with-bazel/crypto/x509/v3_purp.cc +150 -137
  817. data/third_party/boringssl-with-bazel/crypto/x509/v3_skey.cc +23 -26
  818. data/third_party/boringssl-with-bazel/crypto/x509/v3_utl.cc +151 -178
  819. data/third_party/boringssl-with-bazel/crypto/x509/x509.cc +1 -1
  820. data/third_party/boringssl-with-bazel/crypto/x509/x509_att.cc +32 -30
  821. data/third_party/boringssl-with-bazel/crypto/x509/x509_cmp.cc +95 -88
  822. data/third_party/boringssl-with-bazel/crypto/x509/x509_d2.cc +9 -9
  823. data/third_party/boringssl-with-bazel/crypto/x509/x509_def.cc +6 -8
  824. data/third_party/boringssl-with-bazel/crypto/x509/x509_ext.cc +46 -24
  825. data/third_party/boringssl-with-bazel/crypto/x509/x509_lu.cc +211 -195
  826. data/third_party/boringssl-with-bazel/crypto/x509/x509_obj.cc +20 -16
  827. data/third_party/boringssl-with-bazel/crypto/x509/x509_req.cc +37 -46
  828. data/third_party/boringssl-with-bazel/crypto/x509/x509_set.cc +62 -90
  829. data/third_party/boringssl-with-bazel/crypto/x509/x509_trs.cc +18 -13
  830. data/third_party/boringssl-with-bazel/crypto/x509/x509_v3.cc +33 -33
  831. data/third_party/boringssl-with-bazel/crypto/x509/x509_vfy.cc +109 -110
  832. data/third_party/boringssl-with-bazel/crypto/x509/x509_vpm.cc +56 -47
  833. data/third_party/boringssl-with-bazel/crypto/x509/x509cset.cc +27 -40
  834. data/third_party/boringssl-with-bazel/crypto/x509/x509name.cc +77 -67
  835. data/third_party/boringssl-with-bazel/crypto/x509/x509rset.cc +5 -17
  836. data/third_party/boringssl-with-bazel/crypto/x509/x509spki.cc +13 -13
  837. data/third_party/boringssl-with-bazel/crypto/x509/x_algor.cc +131 -24
  838. data/third_party/boringssl-with-bazel/crypto/x509/x_all.cc +72 -39
  839. data/third_party/boringssl-with-bazel/crypto/x509/x_attrib.cc +10 -4
  840. data/third_party/boringssl-with-bazel/crypto/x509/x_crl.cc +77 -44
  841. data/third_party/boringssl-with-bazel/crypto/x509/x_exten.cc +6 -0
  842. data/third_party/boringssl-with-bazel/crypto/x509/x_name.cc +311 -383
  843. data/third_party/boringssl-with-bazel/crypto/x509/x_pubkey.cc +129 -82
  844. data/third_party/boringssl-with-bazel/crypto/x509/x_req.cc +11 -6
  845. data/third_party/boringssl-with-bazel/crypto/x509/x_sig.cc +4 -4
  846. data/third_party/boringssl-with-bazel/crypto/x509/x_spki.cc +11 -1
  847. data/third_party/boringssl-with-bazel/crypto/x509/x_x509.cc +285 -280
  848. data/third_party/boringssl-with-bazel/crypto/x509/x_x509a.cc +60 -60
  849. data/third_party/boringssl-with-bazel/crypto/xwing/xwing.cc +257 -0
  850. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +301 -0
  851. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +301 -0
  852. data/third_party/boringssl-with-bazel/gen/crypto/err_data.cc +526 -500
  853. data/third_party/boringssl-with-bazel/include/openssl/aead.h +286 -114
  854. data/third_party/boringssl-with-bazel/include/openssl/aes.h +43 -43
  855. data/third_party/boringssl-with-bazel/include/openssl/asm_base.h +29 -16
  856. data/third_party/boringssl-with-bazel/include/openssl/asn1.h +641 -631
  857. data/third_party/boringssl-with-bazel/include/openssl/asn1t.h +7 -9
  858. data/third_party/boringssl-with-bazel/include/openssl/base.h +34 -54
  859. data/third_party/boringssl-with-bazel/include/openssl/base64.h +30 -30
  860. data/third_party/boringssl-with-bazel/include/openssl/bio.h +373 -316
  861. data/third_party/boringssl-with-bazel/include/openssl/blake2.h +15 -11
  862. data/third_party/boringssl-with-bazel/include/openssl/blowfish.h +10 -3
  863. data/third_party/boringssl-with-bazel/include/openssl/bn.h +298 -306
  864. data/third_party/boringssl-with-bazel/include/openssl/buf.h +14 -14
  865. data/third_party/boringssl-with-bazel/include/openssl/bytestring.h +272 -207
  866. data/third_party/boringssl-with-bazel/include/openssl/cast.h +45 -8
  867. data/third_party/boringssl-with-bazel/include/openssl/chacha.h +3 -3
  868. data/third_party/boringssl-with-bazel/include/openssl/cipher.h +334 -152
  869. data/third_party/boringssl-with-bazel/include/openssl/cmac.h +13 -13
  870. data/third_party/boringssl-with-bazel/include/openssl/cms.h +35 -34
  871. data/third_party/boringssl-with-bazel/include/openssl/conf.h +15 -14
  872. data/third_party/boringssl-with-bazel/include/openssl/crypto.h +15 -13
  873. data/third_party/boringssl-with-bazel/include/openssl/ctrdrbg.h +49 -15
  874. data/third_party/boringssl-with-bazel/include/openssl/curve25519.h +24 -24
  875. data/third_party/boringssl-with-bazel/include/openssl/des.h +22 -16
  876. data/third_party/boringssl-with-bazel/include/openssl/dh.h +95 -95
  877. data/third_party/boringssl-with-bazel/include/openssl/digest.h +140 -71
  878. data/third_party/boringssl-with-bazel/include/openssl/dsa.h +101 -101
  879. data/third_party/boringssl-with-bazel/include/openssl/ec.h +143 -119
  880. data/third_party/boringssl-with-bazel/include/openssl/ec_key.h +97 -97
  881. data/third_party/boringssl-with-bazel/include/openssl/ecdh.h +9 -9
  882. data/third_party/boringssl-with-bazel/include/openssl/ecdsa.h +89 -46
  883. data/third_party/boringssl-with-bazel/include/openssl/engine.h +5 -5
  884. data/third_party/boringssl-with-bazel/include/openssl/err.h +73 -71
  885. data/third_party/boringssl-with-bazel/include/openssl/evp.h +824 -344
  886. data/third_party/boringssl-with-bazel/include/openssl/evp_errors.h +9 -2
  887. data/third_party/boringssl-with-bazel/include/openssl/ex_data.h +27 -32
  888. data/third_party/boringssl-with-bazel/include/openssl/hkdf.h +6 -6
  889. data/third_party/boringssl-with-bazel/include/openssl/hmac.h +31 -31
  890. data/third_party/boringssl-with-bazel/include/openssl/hpke.h +133 -117
  891. data/third_party/boringssl-with-bazel/include/openssl/hrss.h +14 -8
  892. data/third_party/boringssl-with-bazel/include/openssl/kdf.h +20 -19
  893. data/third_party/boringssl-with-bazel/include/openssl/lhash.h +4 -25
  894. data/third_party/boringssl-with-bazel/include/openssl/md4.h +14 -7
  895. data/third_party/boringssl-with-bazel/include/openssl/md5.h +7 -7
  896. data/third_party/boringssl-with-bazel/include/openssl/mem.h +38 -38
  897. data/third_party/boringssl-with-bazel/include/openssl/mldsa.h +380 -24
  898. data/third_party/boringssl-with-bazel/include/openssl/mlkem.h +43 -43
  899. data/third_party/boringssl-with-bazel/include/openssl/nid.h +1297 -2
  900. data/third_party/boringssl-with-bazel/include/openssl/obj.h +49 -49
  901. data/third_party/boringssl-with-bazel/include/openssl/opensslconf.h +30 -0
  902. data/third_party/boringssl-with-bazel/include/openssl/params.h +42 -0
  903. data/third_party/boringssl-with-bazel/include/openssl/pem.h +39 -30
  904. data/third_party/boringssl-with-bazel/include/openssl/pkcs7.h +40 -40
  905. data/third_party/boringssl-with-bazel/include/openssl/pkcs8.h +69 -63
  906. data/third_party/boringssl-with-bazel/include/openssl/poly1305.h +8 -5
  907. data/third_party/boringssl-with-bazel/include/openssl/pool.h +54 -25
  908. data/third_party/boringssl-with-bazel/include/openssl/posix_time.h +6 -6
  909. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols.h +7866 -0
  910. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_S.h +585 -0
  911. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_c.h +305 -0
  912. data/third_party/boringssl-with-bazel/include/openssl/rand.h +18 -18
  913. data/third_party/boringssl-with-bazel/include/openssl/rc4.h +4 -4
  914. data/third_party/boringssl-with-bazel/include/openssl/ripemd.h +15 -10
  915. data/third_party/boringssl-with-bazel/include/openssl/rsa.h +272 -235
  916. data/third_party/boringssl-with-bazel/include/openssl/service_indicator.h +4 -81
  917. data/third_party/boringssl-with-bazel/include/openssl/sha.h +43 -166
  918. data/third_party/boringssl-with-bazel/include/openssl/sha2.h +201 -0
  919. data/third_party/boringssl-with-bazel/include/openssl/slhdsa.h +100 -48
  920. data/third_party/boringssl-with-bazel/include/openssl/span.h +190 -75
  921. data/third_party/boringssl-with-bazel/include/openssl/ssl.h +2168 -1567
  922. data/third_party/boringssl-with-bazel/include/openssl/ssl3.h +11 -69
  923. data/third_party/boringssl-with-bazel/include/openssl/stack.h +135 -80
  924. data/third_party/boringssl-with-bazel/include/openssl/target.h +13 -1
  925. data/third_party/boringssl-with-bazel/include/openssl/thread.h +0 -10
  926. data/third_party/boringssl-with-bazel/include/openssl/tls1.h +31 -310
  927. data/third_party/boringssl-with-bazel/include/openssl/tls_prf.h +47 -0
  928. data/third_party/boringssl-with-bazel/include/openssl/trust_token.h +97 -92
  929. data/third_party/boringssl-with-bazel/include/openssl/type_check.h +1 -1
  930. data/third_party/boringssl-with-bazel/include/openssl/x509.h +1805 -1857
  931. data/third_party/boringssl-with-bazel/include/openssl/x509v3.h +1 -1
  932. data/third_party/boringssl-with-bazel/include/openssl/xwing.h +115 -0
  933. data/third_party/boringssl-with-bazel/ssl/bio_ssl.cc +24 -19
  934. data/third_party/boringssl-with-bazel/ssl/d1_both.cc +59 -57
  935. data/third_party/boringssl-with-bazel/ssl/d1_lib.cc +53 -42
  936. data/third_party/boringssl-with-bazel/ssl/d1_pkt.cc +4 -4
  937. data/third_party/boringssl-with-bazel/ssl/d1_srtp.cc +2 -2
  938. data/third_party/boringssl-with-bazel/ssl/dtls_method.cc +10 -10
  939. data/third_party/boringssl-with-bazel/ssl/dtls_record.cc +6 -6
  940. data/third_party/boringssl-with-bazel/ssl/encrypted_client_hello.cc +61 -71
  941. data/third_party/boringssl-with-bazel/ssl/extensions.cc +967 -366
  942. data/third_party/boringssl-with-bazel/ssl/handoff.cc +77 -38
  943. data/third_party/boringssl-with-bazel/ssl/handshake.cc +63 -30
  944. data/third_party/boringssl-with-bazel/ssl/handshake_client.cc +129 -85
  945. data/third_party/boringssl-with-bazel/ssl/handshake_server.cc +116 -68
  946. data/third_party/boringssl-with-bazel/ssl/internal.h +983 -1207
  947. data/third_party/boringssl-with-bazel/ssl/s3_both.cc +34 -29
  948. data/third_party/boringssl-with-bazel/ssl/s3_lib.cc +4 -3
  949. data/third_party/boringssl-with-bazel/ssl/s3_pkt.cc +12 -12
  950. data/third_party/boringssl-with-bazel/ssl/ssl_aead_ctx.cc +5 -5
  951. data/third_party/boringssl-with-bazel/ssl/ssl_asn1.cc +114 -59
  952. data/third_party/boringssl-with-bazel/ssl/ssl_buffer.cc +17 -18
  953. data/third_party/boringssl-with-bazel/ssl/ssl_cert.cc +99 -61
  954. data/third_party/boringssl-with-bazel/ssl/ssl_cipher.cc +143 -134
  955. data/third_party/boringssl-with-bazel/ssl/ssl_credential.cc +188 -90
  956. data/third_party/boringssl-with-bazel/ssl/ssl_file.cc +132 -225
  957. data/third_party/boringssl-with-bazel/ssl/ssl_key_share.cc +79 -7
  958. data/third_party/boringssl-with-bazel/ssl/ssl_lib.cc +698 -302
  959. data/third_party/boringssl-with-bazel/ssl/ssl_privkey.cc +102 -45
  960. data/third_party/boringssl-with-bazel/ssl/ssl_session.cc +117 -102
  961. data/third_party/boringssl-with-bazel/ssl/ssl_transcript.cc +3 -3
  962. data/third_party/boringssl-with-bazel/ssl/ssl_versions.cc +24 -24
  963. data/third_party/boringssl-with-bazel/ssl/ssl_x509.cc +184 -170
  964. data/third_party/boringssl-with-bazel/ssl/t1_enc.cc +12 -10
  965. data/third_party/boringssl-with-bazel/ssl/tls13_both.cc +86 -54
  966. data/third_party/boringssl-with-bazel/ssl/tls13_client.cc +176 -90
  967. data/third_party/boringssl-with-bazel/ssl/tls13_enc.cc +166 -112
  968. data/third_party/boringssl-with-bazel/ssl/tls13_server.cc +188 -97
  969. data/third_party/boringssl-with-bazel/ssl/tls_method.cc +23 -23
  970. data/third_party/boringssl-with-bazel/ssl/tls_record.cc +17 -14
  971. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
  972. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
  973. data/third_party/boringssl-with-bazel/third_party/fiat/curve25519_64_adx.h +37 -33
  974. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64.h +4 -93
  975. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64_msvc.h +4 -69
  976. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_32.br.c.inc +71 -0
  977. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_64.br.c.inc +84 -0
  978. data/third_party/boringssl-with-bazel/third_party/fiat/p256_point.br.c.inc +166 -0
  979. metadata +77 -52
  980. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +0 -240
  981. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +0 -56
  982. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +0 -157
  983. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +0 -72
  984. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +0 -181
  985. data/third_party/abseil-cpp/absl/base/internal/identity.h +0 -39
  986. data/third_party/abseil-cpp/absl/base/internal/nullability_deprecated.h +0 -106
  987. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -105
  988. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -50
  989. data/third_party/abseil-cpp/absl/strings/string_view.cc +0 -257
  990. data/third_party/boringssl-with-bazel/crypto/evp/p_dh_asn1.cc +0 -142
  991. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa_asn1.cc +0 -279
  992. data/third_party/boringssl-with-bazel/crypto/evp/p_ec_asn1.cc +0 -286
  993. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519_asn1.cc +0 -225
  994. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa_asn1.cc +0 -198
  995. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519_asn1.cc +0 -237
  996. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p224-64.cc.inc +0 -1163
  997. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.cc.inc +0 -741
  998. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.h +0 -207
  999. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/blinding.cc.inc +0 -147
  1000. data/third_party/boringssl-with-bazel/crypto/rand/getrandom_fillin.h +0 -64
  1001. data/third_party/boringssl-with-bazel/crypto/rand/passive.cc +0 -178
  1002. data/third_party/boringssl-with-bazel/crypto/x509/ext_dat.h +0 -92
  1003. data/third_party/boringssl-with-bazel/include/openssl/bcm_public.h +0 -82
  1004. data/third_party/boringssl-with-bazel/include/openssl/experimental/kyber.h +0 -146
@@ -25,9 +25,8 @@
25
25
 
26
26
  #include "../../internal.h"
27
27
 
28
- #if defined(__cplusplus)
29
- extern "C" {
30
- #endif
28
+
29
+ BSSL_NAMESPACE_BEGIN
31
30
 
32
31
  #if defined(OPENSSL_64_BIT)
33
32
 
@@ -65,7 +64,7 @@ extern "C" {
65
64
  #define BN_MASK2h1 (0xffff8000UL)
66
65
  #define BN_MASK2h (0xffff0000UL)
67
66
  // On some 32-bit platforms, Montgomery multiplication is done using 64-bit
68
- // arithmetic with SIMD instructions. On such platforms, |BN_MONT_CTX::n0|
67
+ // arithmetic with SIMD instructions. On such platforms, `BN_MONT_CTX::n0`
69
68
  // needs to be two words long. Only certain 32-bit platforms actually make use
70
69
  // of n0[1] and shorter R value would suffice for the others. However,
71
70
  // currently only the assembly files know which is which.
@@ -82,7 +81,7 @@ extern "C" {
82
81
  #define BN_CAN_USE_INLINE_ASM
83
82
  #endif
84
83
 
85
- // MOD_EXP_CTIME_ALIGN is the alignment needed for |BN_mod_exp_mont_consttime|'s
84
+ // MOD_EXP_CTIME_ALIGN is the alignment needed for `BN_mod_exp_mont_consttime`'s
86
85
  // tables.
87
86
  //
88
87
  // TODO(davidben): Historically, this alignment came from cache line
@@ -92,8 +91,8 @@ extern "C" {
92
91
  // requirements.
93
92
  #define MOD_EXP_CTIME_ALIGN 64
94
93
 
95
- // MOD_EXP_CTIME_STORAGE_LEN is the number of |BN_ULONG|s needed for the
96
- // |BN_mod_exp_mont_consttime| stack-allocated storage buffer. The buffer is
94
+ // MOD_EXP_CTIME_STORAGE_LEN is the number of `BN_ULONG`s needed for the
95
+ // `BN_mod_exp_mont_consttime` stack-allocated storage buffer. The buffer is
97
96
  // just the right size for the RSAZ and is about ~1KB larger than what's
98
97
  // necessary (4480 bytes) for 1024-bit inputs.
99
98
  #define MOD_EXP_CTIME_STORAGE_LEN \
@@ -105,227 +104,300 @@ extern "C" {
105
104
  sizeof(x) / sizeof(BN_ULONG), 0, BN_FLG_STATIC_DATA \
106
105
  }
107
106
 
108
- #if defined(BN_ULLONG)
109
- #define Lw(t) ((BN_ULONG)(t))
110
- #define Hw(t) ((BN_ULONG)((t) >> BN_BITS2))
111
- #endif
112
-
113
107
  // bn_minimal_width returns the minimal number of words needed to represent
114
- // |bn|.
108
+ // `bn`.
115
109
  int bn_minimal_width(const BIGNUM *bn);
116
110
 
117
- // bn_set_minimal_width sets |bn->width| to |bn_minimal_width(bn)|. If |bn| is
118
- // zero, |bn->neg| is set to zero.
111
+ // bn_set_minimal_width sets `bn->width` to `bn_minimal_width(bn)`. If `bn` is
112
+ // zero, `bn->neg` is set to zero.
119
113
  void bn_set_minimal_width(BIGNUM *bn);
120
114
 
121
- // bn_wexpand ensures that |bn| has at least |words| works of space without
115
+ // bn_wexpand ensures that `bn` has at least `words` works of space without
122
116
  // altering its value. It returns one on success or zero on allocation
123
117
  // failure.
124
118
  int bn_wexpand(BIGNUM *bn, size_t words);
125
119
 
126
- // bn_expand acts the same as |bn_wexpand|, but takes a number of bits rather
120
+ // bn_expand acts the same as `bn_wexpand`, but takes a number of bits rather
127
121
  // than a number of words.
128
122
  int bn_expand(BIGNUM *bn, size_t bits);
129
123
 
130
- // bn_resize_words adjusts |bn->width| to be |words|. It returns one on success
131
- // and zero on allocation error or if |bn|'s value is too large.
124
+ // bn_resize_words adjusts `bn->width` to be `words`. It returns one on success
125
+ // and zero on allocation error or if `bn`'s value is too large.
132
126
  OPENSSL_EXPORT int bn_resize_words(BIGNUM *bn, size_t words);
133
127
 
134
- // bn_select_words sets |r| to |a| if |mask| is all ones or |b| if |mask| is
128
+ // bn_select_words sets `r` to `a` if `mask` is all ones or `b` if `mask` is
135
129
  // all zeros.
136
130
  void bn_select_words(BN_ULONG *r, BN_ULONG mask, const BN_ULONG *a,
137
131
  const BN_ULONG *b, size_t num);
138
132
 
139
- // bn_set_words sets |bn| to the value encoded in the |num| words in |words|,
133
+ // bn_set_words sets `bn` to the value encoded in the `num` words in `words`,
140
134
  // least significant word first.
141
135
  int bn_set_words(BIGNUM *bn, const BN_ULONG *words, size_t num);
142
136
 
143
- // bn_set_static_words acts like |bn_set_words|, but doesn't copy the data. A
144
- // flag is set on |bn| so that |BN_free| won't attempt to free the data.
137
+ // bn_set_static_words acts like `bn_set_words`, but doesn't copy the data. A
138
+ // flag is set on `bn` so that `BN_free` won't attempt to free the data.
145
139
  //
146
- // The |STATIC_BIGNUM| macro is probably a better solution for this outside of
140
+ // The `STATIC_BIGNUM` macro is probably a better solution for this outside of
147
141
  // the FIPS module. Inside of the FIPS module that macro generates rel.ro data,
148
142
  // which doesn't work with FIPS requirements.
149
143
  void bn_set_static_words(BIGNUM *bn, const BN_ULONG *words, size_t num);
150
144
 
151
- // bn_fits_in_words returns one if |bn| may be represented in |num| words, plus
145
+ // bn_fits_in_words returns one if `bn` may be represented in `num` words, plus
152
146
  // a sign bit, and zero otherwise.
153
147
  int bn_fits_in_words(const BIGNUM *bn, size_t num);
154
148
 
155
- // bn_copy_words copies the value of |bn| to |out| and returns one if the value
156
- // is representable in |num| words. Otherwise, it returns zero.
149
+ // bn_copy_words copies the value of `bn` to `out` and returns one if the value
150
+ // is representable in `num` words. Otherwise, it returns zero.
157
151
  int bn_copy_words(BN_ULONG *out, size_t num, const BIGNUM *bn);
158
152
 
159
- // bn_assert_fits_in_bytes asserts that |bn| fits in |num| bytes. This is a
153
+ // bn_assert_fits_in_bytes asserts that `bn` fits in `num` bytes. This is a
160
154
  // no-op in release builds, but triggers an assert in debug builds, and
161
155
  // declassifies all bytes which are therefore known to be zero in constant-time
162
156
  // validation.
163
157
  void bn_assert_fits_in_bytes(const BIGNUM *bn, size_t num);
164
158
 
165
- // bn_secret marks |bn|'s contents, but not its width or sign, as secret. See
166
- // |CONSTTIME_SECRET| for details.
159
+ // bn_secret marks `bn`'s contents, but not its width or sign, as secret. See
160
+ // `CONSTTIME_SECRET` for details.
167
161
  inline void bn_secret(BIGNUM *bn) {
168
162
  CONSTTIME_SECRET(bn->d, bn->width * sizeof(BN_ULONG));
169
163
  }
170
164
 
171
- // bn_declassify marks |bn|'s value as public. See |CONSTTIME_DECLASSIFY| for
165
+ // bn_declassify marks `bn`'s value as public. See `CONSTTIME_DECLASSIFY` for
172
166
  // details.
173
167
  inline void bn_declassify(BIGNUM *bn) {
174
168
  CONSTTIME_DECLASSIFY(bn->d, bn->width * sizeof(BN_ULONG));
175
169
  }
176
170
 
177
- // bn_mul_add_words multiples |ap| by |w|, adds the result to |rp|, and places
178
- // the result in |rp|. |ap| and |rp| must both be |num| words long. It returns
179
- // the carry word of the operation. |ap| and |rp| may be equal but otherwise may
171
+ #if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86)
172
+ // See asm/bn-586.pl.
173
+ #define BN_ADD_ASM
174
+ #define BN_MUL_ASM
175
+ #endif
176
+
177
+ #if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && \
178
+ (defined(__GNUC__) || defined(__clang__))
179
+ // See asm/x86_64-gcc.c
180
+ #define BN_ADD_ASM
181
+ #define BN_MUL_ASM
182
+ #endif
183
+
184
+ #if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64)
185
+ // See asm/bn-armv8.pl.
186
+ #define BN_ADD_ASM
187
+ #endif
188
+
189
+ // bn_mul_add_words multiples `ap` by `w`, adds the result to `rp`, and places
190
+ // the result in `rp`. `ap` and `rp` must both be `num` words long. It returns
191
+ // the carry word of the operation. `ap` and `rp` may be equal but otherwise may
180
192
  // not alias.
181
- BN_ULONG bn_mul_add_words(BN_ULONG *rp, const BN_ULONG *ap, size_t num,
193
+ #if defined(BN_MUL_ASM)
194
+ extern "C"
195
+ #endif
196
+ BN_ULONG bn_mul_add_words(BN_ULONG *rp, const BN_ULONG *ap, size_t num,
197
+ BN_ULONG w);
198
+
199
+ // bn_mul_words multiples `ap` by `w` and places the result in `rp`. `ap` and
200
+ // `rp` must both be `num` words long. It returns the carry word of the
201
+ // operation. `ap` and `rp` may be equal but otherwise may not alias.
202
+ #if defined(BN_MUL_ASM)
203
+ extern "C"
204
+ #endif
205
+ BN_ULONG bn_mul_words(BN_ULONG *rp, const BN_ULONG *ap, size_t num,
182
206
  BN_ULONG w);
183
207
 
184
- // bn_mul_words multiples |ap| by |w| and places the result in |rp|. |ap| and
185
- // |rp| must both be |num| words long. It returns the carry word of the
186
- // operation. |ap| and |rp| may be equal but otherwise may not alias.
187
- BN_ULONG bn_mul_words(BN_ULONG *rp, const BN_ULONG *ap, size_t num, BN_ULONG w);
188
-
189
- // bn_sqr_words sets |rp[2*i]| and |rp[2*i+1]| to |ap[i]|'s square, for all |i|
190
- // up to |num|. |ap| is an array of |num| words and |rp| an array of |2*num|
191
- // words. |ap| and |rp| may not alias.
208
+ // bn_sqr_add_words computes `tmp` where `tmp[2*i]` and `tmp[2*i+1]` are
209
+ // `ap[i]`'s square, for all `i` up to `num`, and adds the result to `rp`. If
210
+ // the result does not fit in `2*num` words, the final carry bit is truncated.
211
+ // `ap` is an array of `num` words and `rp` an array of `2*num` words. `ap` and
212
+ // `rp` may not alias.
192
213
  //
193
- // This gives the contribution of the |ap[i]*ap[i]| terms when squaring |ap|.
194
- void bn_sqr_words(BN_ULONG *rp, const BN_ULONG *ap, size_t num);
214
+ // This gives the contribution of the `ap[i]*ap[i]` terms when squaring `ap`.
215
+ #if defined(BN_MUL_ASM)
216
+ extern "C"
217
+ #endif
218
+ void bn_sqr_add_words(BN_ULONG *rp, const BN_ULONG *ap, size_t num);
195
219
 
196
- // bn_add_words adds |ap| to |bp| and places the result in |rp|, each of which
197
- // are |num| words long. It returns the carry bit, which is one if the operation
198
- // overflowed and zero otherwise. Any pair of |ap|, |bp|, and |rp| may be equal
220
+ // bn_add_words adds `ap` to `bp` and places the result in `rp`, each of which
221
+ // are `num` words long. It returns the carry bit, which is one if the operation
222
+ // overflowed and zero otherwise. Any pair of `ap`, `bp`, and `rp` may be equal
199
223
  // to each other but otherwise may not alias.
200
- BN_ULONG bn_add_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
201
- size_t num);
202
224
 
203
- // bn_sub_words subtracts |bp| from |ap| and places the result in |rp|. It
225
+ #if defined(BN_ADD_ASM)
226
+ extern "C"
227
+ #endif
228
+ BN_ULONG bn_add_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
229
+ size_t num);
230
+
231
+ // bn_sub_words subtracts `bp` from `ap` and places the result in `rp`. It
204
232
  // returns the borrow bit, which is one if the computation underflowed and zero
205
- // otherwise. Any pair of |ap|, |bp|, and |rp| may be equal to each other but
233
+ // otherwise. Any pair of `ap`, `bp`, and `rp` may be equal to each other but
206
234
  // otherwise may not alias.
207
- BN_ULONG bn_sub_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
208
- size_t num);
235
+ #if defined(BN_ADD_ASM)
236
+ extern "C"
237
+ #endif
238
+ BN_ULONG bn_sub_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
239
+ size_t num);
209
240
 
210
- // bn_mul_comba4 sets |r| to the product of |a| and |b|.
211
- void bn_mul_comba4(BN_ULONG r[8], const BN_ULONG a[4], const BN_ULONG b[4]);
241
+ // bn_mul_comba4 sets `r` to the product of `a` and `b`.
242
+ #if defined(BN_MUL_ASM)
243
+ extern "C"
244
+ #endif
245
+ void bn_mul_comba4(BN_ULONG r[8], const BN_ULONG a[4], const BN_ULONG b[4]);
212
246
 
213
- // bn_mul_comba8 sets |r| to the product of |a| and |b|.
214
- void bn_mul_comba8(BN_ULONG r[16], const BN_ULONG a[8], const BN_ULONG b[8]);
247
+ // bn_mul_comba8 sets `r` to the product of `a` and `b`.
248
+ #if defined(BN_MUL_ASM)
249
+ extern "C"
250
+ #endif
251
+ void bn_mul_comba8(BN_ULONG r[16], const BN_ULONG a[8],
252
+ const BN_ULONG b[8]);
215
253
 
216
- // bn_sqr_comba8 sets |r| to |a|^2.
217
- void bn_sqr_comba8(BN_ULONG r[16], const BN_ULONG a[8]);
254
+ // bn_sqr_comba8 sets `r` to `a`^2.
255
+ #if defined(BN_MUL_ASM)
256
+ extern "C"
257
+ #endif
258
+ void bn_sqr_comba8(BN_ULONG r[16], const BN_ULONG a[8]);
218
259
 
219
- // bn_sqr_comba4 sets |r| to |a|^2.
220
- void bn_sqr_comba4(BN_ULONG r[8], const BN_ULONG a[4]);
260
+ // bn_sqr_comba4 sets `r` to `a`^2.
261
+ #if defined(BN_MUL_ASM)
262
+ extern "C"
263
+ #endif
264
+ void bn_sqr_comba4(BN_ULONG r[8], const BN_ULONG a[4]);
221
265
 
222
- // bn_less_than_words returns one if |a| < |b| and zero otherwise, where |a|
223
- // and |b| both are |len| words long. It runs in constant time.
266
+ // bn_less_than_words returns one if `a` < `b` and zero otherwise, where `a`
267
+ // and `b` both are `len` words long. It runs in constant time.
224
268
  int bn_less_than_words(const BN_ULONG *a, const BN_ULONG *b, size_t len);
225
269
 
226
- // bn_in_range_words returns one if |min_inclusive| <= |a| < |max_exclusive|,
227
- // where |a| and |max_exclusive| both are |len| words long. |a| and
228
- // |max_exclusive| are treated as secret.
270
+ // bn_in_range_words returns one if `min_inclusive` <= `a` < `max_exclusive`,
271
+ // where `a` and `max_exclusive` both are `len` words long. `a` and
272
+ // `max_exclusive` are treated as secret.
229
273
  int bn_in_range_words(const BN_ULONG *a, BN_ULONG min_inclusive,
230
274
  const BN_ULONG *max_exclusive, size_t len);
231
275
 
232
- // bn_rand_range_words sets |out| to a uniformly distributed random number from
233
- // |min_inclusive| to |max_exclusive|. Both |out| and |max_exclusive| are |len|
276
+ // bn_rand_range_words sets `out` to a uniformly distributed random number from
277
+ // `min_inclusive` to `max_exclusive`. Both `out` and `max_exclusive` are `len`
234
278
  // words long.
235
279
  //
236
- // This function runs in time independent of the result, but |min_inclusive| and
237
- // |max_exclusive| are public data. (Information about the range is unavoidably
280
+ // This function runs in time independent of the result, but `min_inclusive` and
281
+ // `max_exclusive` are public data. (Information about the range is unavoidably
238
282
  // leaked by how many iterations it took to select a number.)
239
283
  int bn_rand_range_words(BN_ULONG *out, BN_ULONG min_inclusive,
240
284
  const BN_ULONG *max_exclusive, size_t len,
241
285
  const uint8_t additional_data[32]);
242
286
 
243
- // bn_range_secret_range behaves like |BN_rand_range_ex|, but treats
244
- // |max_exclusive| as secret. Because of this constraint, the distribution of
287
+ // bn_range_secret_range behaves like `BN_rand_range_ex`, but treats
288
+ // `max_exclusive` as secret. Because of this constraint, the distribution of
245
289
  // values returned is more complex.
246
290
  //
247
291
  // Rather than repeatedly generating values until one is in range, which would
248
292
  // leak information, it generates one value. If the value is in range, it sets
249
- // |*out_is_uniform| to one. Otherwise, it sets |*out_is_uniform| to zero,
293
+ // `*out_is_uniform` to one. Otherwise, it sets `*out_is_uniform` to zero,
250
294
  // fixing up the value to force it in range.
251
295
  //
252
- // The subset of calls to |bn_rand_secret_range| which set |*out_is_uniform| to
296
+ // The subset of calls to `bn_rand_secret_range` which set `*out_is_uniform` to
253
297
  // one are uniformly distributed in the target range. Calls overall are not.
254
298
  // This function is intended for use in situations where the extra values are
255
299
  // still usable and where the number of iterations needed to reach the target
256
300
  // number of uniform outputs may be blinded for negligible probabilities of
257
301
  // timing leaks.
258
302
  //
259
- // Although this function treats |max_exclusive| as secret, it treats the number
260
- // of bits in |max_exclusive| as public.
303
+ // Although this function treats `max_exclusive` as secret, it treats the number
304
+ // of bits in `max_exclusive` as public.
261
305
  int bn_rand_secret_range(BIGNUM *r, int *out_is_uniform, BN_ULONG min_inclusive,
262
306
  const BIGNUM *max_exclusive);
263
307
 
264
- // BN_MONTGOMERY_MAX_WORDS is the maximum number of words allowed in a |BIGNUM|
308
+ // BN_MONTGOMERY_MAX_WORDS is the maximum number of words allowed in a `BIGNUM`
265
309
  // used with Montgomery reduction. Ideally this limit would be applied to all
266
- // |BIGNUM|s, in |bn_wexpand|, but the exactfloat library needs to create 8 MiB
310
+ // `BIGNUM`s, in `bn_wexpand`, but the exactfloat library needs to create 8 MiB
267
311
  // values for other operations.
268
312
  //
269
- // TODO(crbug.com/402677800): This is not quite tight enough to limit the
270
- // |bn_mul_mont| allocation to under a page. Lower the maximum RSA key and then
271
- // lower this to match.
313
+ // This limit is set so that one number fits within 2 KiB, giving room to
314
+ // allocate a few of them on the stack. It is also set to limit the DoS impact
315
+ // of large RSA, DH, and DSA keys, which scale cubically.
272
316
  #define BN_MONTGOMERY_MAX_WORDS (16384 / BN_BITS2)
273
317
 
318
+ BSSL_NAMESPACE_END
319
+
320
+ struct bn_mont_ctx_st {
321
+ // RR is R^2, reduced modulo `N`. It is used to convert to Montgomery form. It
322
+ // is guaranteed to have the same width as `N`.
323
+ BIGNUM RR;
324
+ // N is the modulus. It is always stored in minimal form, so `N.width`
325
+ // determines R.
326
+ BIGNUM N;
327
+ BN_ULONG n0[BN_MONT_CTX_N0_LIMBS]; // least significant words of (R*Ri-1)/N
328
+ };
329
+
330
+ BSSL_NAMESPACE_BEGIN
331
+
274
332
  #if !defined(OPENSSL_NO_ASM) && \
275
333
  (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \
276
334
  defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64))
277
335
  #define OPENSSL_BN_ASM_MONT
278
- // bn_mul_mont writes |ap| * |bp| mod |np| to |rp|, each |num| words
279
- // long. Inputs and outputs are in Montgomery form. |n0| is a pointer to the
280
- // corresponding field in |BN_MONT_CTX|.
336
+ // bn_mul_mont_words writes `ap` * `bp` mod `np` to `rp`, each `num` words
337
+ // long. Inputs and outputs are in Montgomery form. `n0` is a pointer to the
338
+ // corresponding field in `BN_MONT_CTX`.
281
339
  //
282
- // If at least one of |ap| or |bp| is fully reduced, |rp| will be fully reduced.
340
+ // If at least one of `ap` or `bp` is fully reduced, `rp` will be fully reduced.
283
341
  // If neither is fully-reduced, the output may not be either.
284
342
  //
285
- // This function allocates up to 2 * |num| words (plus a constant allocation) on
286
- // the stack, so |num| should be at most |BN_MONTGOMERY_MAX_WORDS|.
287
- // Additionally, |num| must be at least 128 / |BN_BITS2|.
343
+ // This function allocates up to 2 * `num` words (plus a constant allocation) on
344
+ // the stack, so `num` should be at most `BN_MONTGOMERY_MAX_WORDS`.
345
+ // Additionally, `num` must be at least 128 / `BN_BITS2`.
288
346
  //
289
347
  // TODO(davidben): The x86_64 implementation expects a 32-bit input and masks
290
348
  // off upper bits. The aarch64 implementation expects a 64-bit input and does
291
- // not. |size_t| is the safer option but not strictly correct for x86_64. But
292
- // the |BN_MONTGOMERY_MAX_WORDS| bound makes this moot.
349
+ // not. `size_t` is the safer option but not strictly correct for x86_64. But
350
+ // the `BN_MONTGOMERY_MAX_WORDS` bound makes this moot.
293
351
  //
294
- // See also discussion in |ToWord| in abi_test.h for notes on smaller-than-word
352
+ // See also discussion in `ToWord` in abi_test.h for notes on smaller-than-word
295
353
  // inputs.
296
- void bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
297
- const BN_ULONG *np, const BN_ULONG *n0, size_t num);
354
+ extern "C" void bn_mul_mont_words(BN_ULONG *rp, const BN_ULONG *ap,
355
+ const BN_ULONG *bp, const BN_ULONG *np,
356
+ const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS],
357
+ size_t num);
298
358
 
299
359
  #if defined(OPENSSL_X86_64)
300
- inline int bn_mulx_adx_capable(void) {
360
+ inline int bn_mulx_adx_capable() {
301
361
  // MULX is in BMI2.
302
362
  return CRYPTO_is_BMI2_capable() && CRYPTO_is_ADX_capable();
303
363
  }
304
- void bn_mul_mont_nohw(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
305
- const BN_ULONG *np, const BN_ULONG *n0, size_t num);
364
+ extern "C" void bn_mul_mont_nohw(BN_ULONG *rp, const BN_ULONG *ap,
365
+ const BN_ULONG *bp, const BN_ULONG *np,
366
+ const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS],
367
+ size_t num);
306
368
  inline int bn_mul4x_mont_capable(size_t num) {
307
369
  return num >= 8 && (num & 3) == 0;
308
370
  }
309
- void bn_mul4x_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
310
- const BN_ULONG *np, const BN_ULONG *n0, size_t num);
371
+ extern "C" void bn_mul4x_mont(BN_ULONG *rp, const BN_ULONG *ap,
372
+ const BN_ULONG *bp, const BN_ULONG *np,
373
+ const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS],
374
+ size_t num);
311
375
  inline int bn_mulx4x_mont_capable(size_t num) {
312
376
  return bn_mul4x_mont_capable(num) && bn_mulx_adx_capable();
313
377
  }
314
- void bn_mulx4x_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
315
- const BN_ULONG *np, const BN_ULONG *n0, size_t num);
378
+ extern "C" void bn_mulx4x_mont(BN_ULONG *rp, const BN_ULONG *ap,
379
+ const BN_ULONG *bp, const BN_ULONG *np,
380
+ const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS],
381
+ size_t num);
316
382
  inline int bn_sqr8x_mont_capable(size_t num) {
317
383
  return num >= 8 && (num & 7) == 0;
318
384
  }
319
- void bn_sqr8x_mont(BN_ULONG *rp, const BN_ULONG *ap, BN_ULONG mulx_adx_capable,
320
- const BN_ULONG *np, const BN_ULONG *n0, size_t num);
385
+ extern "C" void bn_sqr8x_mont(BN_ULONG *rp, const BN_ULONG *ap,
386
+ BN_ULONG mulx_adx_capable, const BN_ULONG *np,
387
+ const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS],
388
+ size_t num);
321
389
  #elif defined(OPENSSL_ARM)
322
390
  inline int bn_mul8x_mont_neon_capable(size_t num) {
323
391
  return (num & 7) == 0 && CRYPTO_is_NEON_capable();
324
392
  }
325
- void bn_mul8x_mont_neon(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
326
- const BN_ULONG *np, const BN_ULONG *n0, size_t num);
327
- void bn_mul_mont_nohw(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
328
- const BN_ULONG *np, const BN_ULONG *n0, size_t num);
393
+ extern "C" void bn_mul8x_mont_neon(BN_ULONG *rp, const BN_ULONG *ap,
394
+ const BN_ULONG *bp, const BN_ULONG *np,
395
+ const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS],
396
+ size_t num);
397
+ extern "C" void bn_mul_mont_nohw(BN_ULONG *rp, const BN_ULONG *ap,
398
+ const BN_ULONG *bp, const BN_ULONG *np,
399
+ const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS],
400
+ size_t num);
329
401
  #endif
330
402
 
331
403
  #endif // OPENSSL_BN_ASM_MONT
@@ -333,40 +405,46 @@ void bn_mul_mont_nohw(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
333
405
  #if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64)
334
406
  #define OPENSSL_BN_ASM_MONT5
335
407
 
336
- // The following functions implement |bn_mul_mont_gather5|. See
337
- // |bn_mul_mont_gather5| for details.
408
+ // The following functions implement `bn_mul_mont_gather5`. See
409
+ // `bn_mul_mont_gather5` for details.
338
410
  inline int bn_mul4x_mont_gather5_capable(int num) { return (num & 7) == 0; }
339
- void bn_mul4x_mont_gather5(BN_ULONG *rp, const BN_ULONG *ap,
340
- const BN_ULONG *table, const BN_ULONG *np,
341
- const BN_ULONG *n0, int num, int power);
411
+ extern "C" void bn_mul4x_mont_gather5(BN_ULONG *rp, const BN_ULONG *ap,
412
+ const BN_ULONG *table, const BN_ULONG *np,
413
+ const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS],
414
+ int num, int power);
342
415
 
343
416
  inline int bn_mulx4x_mont_gather5_capable(int num) {
344
417
  return bn_mul4x_mont_gather5_capable(num) && CRYPTO_is_ADX_capable() &&
345
418
  CRYPTO_is_BMI1_capable() && CRYPTO_is_BMI2_capable();
346
419
  }
347
- void bn_mulx4x_mont_gather5(BN_ULONG *rp, const BN_ULONG *ap,
348
- const BN_ULONG *table, const BN_ULONG *np,
349
- const BN_ULONG *n0, int num, int power);
350
-
351
- void bn_mul_mont_gather5_nohw(BN_ULONG *rp, const BN_ULONG *ap,
352
- const BN_ULONG *table, const BN_ULONG *np,
353
- const BN_ULONG *n0, int num, int power);
354
-
355
- // bn_scatter5 stores |inp| to index |power| of |table|. |inp| and each entry of
356
- // |table| are |num| words long. |power| must be less than 32 and is treated as
357
- // public. |table| must be 32*|num| words long. |table| must be aligned to at
420
+ extern "C" void bn_mulx4x_mont_gather5(BN_ULONG *rp, const BN_ULONG *ap,
421
+ const BN_ULONG *table,
422
+ const BN_ULONG *np,
423
+ const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS],
424
+ int num, int power);
425
+
426
+ extern "C" void bn_mul_mont_gather5_nohw(
427
+ BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *table, const BN_ULONG *np,
428
+ const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS], int num, int power);
429
+
430
+ // bn_scatter5 stores `inp` to index `power` of `table`. `inp` and each entry of
431
+ // `table` are `num` words long. `power` must be less than 32 and is treated as
432
+ // public. `table` must be 32*`num` words long. `table` must be aligned to at
358
433
  // least 16 bytes.
359
- void bn_scatter5(const BN_ULONG *inp, size_t num, BN_ULONG *table,
360
- size_t power);
434
+ extern "C" void bn_scatter5(const BN_ULONG *inp, size_t num, BN_ULONG *table,
435
+ size_t power);
361
436
 
362
- // bn_gather5 loads index |power| of |table| and stores it in |out|. |out| and
363
- // each entry of |table| are |num| words long. |power| must be less than 32 and
364
- // is treated as secret. |table| must be aligned to at least 16 bytes.
365
- void bn_gather5(BN_ULONG *out, size_t num, const BN_ULONG *table, size_t power);
437
+ // bn_gather5 loads index `power` of `table` and stores it in `out`. `out` and
438
+ // each entry of `table` are `num` words long. `power` must be less than 32 and
439
+ // is treated as secret. `table` must be aligned to at least 16 bytes.
440
+ extern "C" void bn_gather5(BN_ULONG *out, size_t num, const BN_ULONG *table,
441
+ size_t power);
366
442
 
367
- // The following functions implement |bn_power5|. See |bn_power5| for details.
368
- void bn_power5_nohw(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *table,
369
- const BN_ULONG *np, const BN_ULONG *n0, int num, int power);
443
+ // The following functions implement `bn_power5`. See `bn_power5` for details.
444
+ extern "C" void bn_power5_nohw(BN_ULONG *rp, const BN_ULONG *ap,
445
+ const BN_ULONG *table, const BN_ULONG *np,
446
+ const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS], int num,
447
+ int power);
370
448
 
371
449
  inline int bn_power5_capable(int num) { return (num & 7) == 0; }
372
450
 
@@ -374,17 +452,19 @@ inline int bn_powerx5_capable(int num) {
374
452
  return bn_power5_capable(num) && CRYPTO_is_ADX_capable() &&
375
453
  CRYPTO_is_BMI1_capable() && CRYPTO_is_BMI2_capable();
376
454
  }
377
- void bn_powerx5(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *table,
378
- const BN_ULONG *np, const BN_ULONG *n0, int num, int power);
455
+ extern "C" void bn_powerx5(BN_ULONG *rp, const BN_ULONG *ap,
456
+ const BN_ULONG *table, const BN_ULONG *np,
457
+ const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS], int num,
458
+ int power);
379
459
 
380
460
  #endif // !OPENSSL_NO_ASM && OPENSSL_X86_64
381
461
 
382
462
  uint64_t bn_mont_n0(const BIGNUM *n);
383
463
 
384
- // bn_mont_ctx_set_RR_consttime initializes |mont->RR|. It returns one on
385
- // success and zero on error. |mont->N| and |mont->n0| must have been
386
- // initialized already. The bit width of |mont->N| is assumed public, but
387
- // |mont->N| is otherwise treated as secret.
464
+ // bn_mont_ctx_set_RR_consttime initializes `mont->RR`. It returns one on
465
+ // success and zero on error. `mont->N` and `mont->n0` must have been
466
+ // initialized already. The bit width of `mont->N` is assumed public, but
467
+ // `mont->N` is otherwise treated as secret.
388
468
  int bn_mont_ctx_set_RR_consttime(BN_MONT_CTX *mont, BN_CTX *ctx);
389
469
 
390
470
  #if defined(_MSC_VER)
@@ -405,35 +485,35 @@ int bn_mont_ctx_set_RR_consttime(BN_MONT_CTX *mont, BN_CTX *ctx);
405
485
  #error "Either BN_ULLONG or BN_UMULT_LOHI must be defined on every platform."
406
486
  #endif
407
487
 
408
- // bn_jacobi returns the Jacobi symbol of |a| and |b| (which is -1, 0 or 1), or
488
+ // bn_jacobi returns the Jacobi symbol of `a` and `b` (which is -1, 0 or 1), or
409
489
  // -2 on error.
410
490
  int bn_jacobi(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
411
491
 
412
- // bn_is_bit_set_words returns one if bit |bit| is set in |a| and zero
492
+ // bn_is_bit_set_words returns one if bit `bit` is set in `a` and zero
413
493
  // otherwise.
414
494
  int bn_is_bit_set_words(const BN_ULONG *a, size_t num, size_t bit);
415
495
 
416
- // bn_one_to_montgomery sets |r| to one in Montgomery form. It returns one on
496
+ // bn_one_to_montgomery sets `r` to one in Montgomery form. It returns one on
417
497
  // success and zero on error. This function treats the bit width of the modulus
418
498
  // as public.
419
499
  int bn_one_to_montgomery(BIGNUM *r, const BN_MONT_CTX *mont, BN_CTX *ctx);
420
500
 
421
- // bn_less_than_montgomery_R returns one if |bn| is less than the Montgomery R
422
- // value for |mont| and zero otherwise.
501
+ // bn_less_than_montgomery_R returns one if `bn` is less than the Montgomery R
502
+ // value for `mont` and zero otherwise.
423
503
  int bn_less_than_montgomery_R(const BIGNUM *bn, const BN_MONT_CTX *mont);
424
504
 
425
- // bn_mod_u16_consttime returns |bn| mod |d|, ignoring |bn|'s sign bit. It runs
426
- // in time independent of the value of |bn|, but it treats |d| as public.
505
+ // bn_mod_u16_consttime returns `bn` mod `d`, ignoring `bn`'s sign bit. It runs
506
+ // in time independent of the value of `bn`, but it treats `d` as public.
427
507
  OPENSSL_EXPORT uint16_t bn_mod_u16_consttime(const BIGNUM *bn, uint16_t d);
428
508
 
429
- // bn_odd_number_is_obviously_composite returns one if |bn| is divisible by one
509
+ // bn_odd_number_is_obviously_composite returns one if `bn` is divisible by one
430
510
  // of the first several odd primes and zero otherwise.
431
511
  int bn_odd_number_is_obviously_composite(const BIGNUM *bn);
432
512
 
433
513
  // A BN_MILLER_RABIN stores state common to each Miller-Rabin iteration. It is
434
- // initialized within an existing |BN_CTX| scope and may not be used after
435
- // that scope is released with |BN_CTX_end|. Field names match those in FIPS
436
- // 186-4, section C.3.1.
514
+ // initialized within an existing `BN_CTX` scope and may not be used after
515
+ // that scope is released with `BN_CTX_end`. Field names match those in FIPS
516
+ // 186-5, section B.3.1.
437
517
  typedef struct {
438
518
  // w1 is w-1.
439
519
  BIGNUM *w1;
@@ -449,46 +529,46 @@ typedef struct {
449
529
  int a;
450
530
  } BN_MILLER_RABIN;
451
531
 
452
- // bn_miller_rabin_init initializes |miller_rabin| for testing if |mont->N| is
532
+ // bn_miller_rabin_init initializes `miller_rabin` for testing if `mont->N` is
453
533
  // prime. It returns one on success and zero on error.
454
534
  OPENSSL_EXPORT int bn_miller_rabin_init(BN_MILLER_RABIN *miller_rabin,
455
535
  const BN_MONT_CTX *mont, BN_CTX *ctx);
456
536
 
457
537
  // bn_miller_rabin_iteration performs one Miller-Rabin iteration, checking if
458
- // |b| is a composite witness for |mont->N|. |miller_rabin| must have been
459
- // initialized with |bn_miller_rabin_setup|. On success, it returns one and sets
460
- // |*out_is_possibly_prime| to one if |mont->N| may still be prime or zero if
461
- // |b| shows it is composite. On allocation or internal failure, it returns
538
+ // `b` is a composite witness for `mont->N`. `miller_rabin` must have been
539
+ // initialized with `bn_miller_rabin_setup`. On success, it returns one and sets
540
+ // `*out_is_possibly_prime` to one if `mont->N` may still be prime or zero if
541
+ // `b` shows it is composite. On allocation or internal failure, it returns
462
542
  // zero.
463
543
  OPENSSL_EXPORT int bn_miller_rabin_iteration(
464
544
  const BN_MILLER_RABIN *miller_rabin, int *out_is_possibly_prime,
465
545
  const BIGNUM *b, const BN_MONT_CTX *mont, BN_CTX *ctx);
466
546
 
467
- // bn_rshift1_words sets |r| to |a| >> 1, where both arrays are |num| bits wide.
547
+ // bn_rshift1_words sets `r` to `a` >> 1, where both arrays are `num` bits wide.
468
548
  void bn_rshift1_words(BN_ULONG *r, const BN_ULONG *a, size_t num);
469
549
 
470
- // bn_rshift_words sets |r| to |a| >> |shift|, where both arrays are |num| bits
550
+ // bn_rshift_words sets `r` to `a` >> `shift`, where both arrays are `num` bits
471
551
  // wide.
472
552
  void bn_rshift_words(BN_ULONG *r, const BN_ULONG *a, unsigned shift,
473
553
  size_t num);
474
554
 
475
- // bn_rshift_secret_shift behaves like |BN_rshift| but runs in time independent
476
- // of both |a| and |n|.
555
+ // bn_rshift_secret_shift behaves like `BN_rshift` but runs in time independent
556
+ // of both `a` and `n`.
477
557
  OPENSSL_EXPORT int bn_rshift_secret_shift(BIGNUM *r, const BIGNUM *a,
478
558
  unsigned n, BN_CTX *ctx);
479
559
 
480
- // bn_reduce_once sets |r| to |a| mod |m| where 0 <= |a| < 2*|m|. It returns
481
- // zero if |a| < |m| and a mask of all ones if |a| >= |m|. Each array is |num|
482
- // words long, but |a| has an additional word specified by |carry|. |carry| must
483
- // be zero or one, as implied by the bounds on |a|.
560
+ // bn_reduce_once sets `r` to `a` mod `m` where 0 <= `a` < 2*`m`. It returns
561
+ // zero if `a` < `m` and a mask of all ones if `a` >= `m`. Each array is `num`
562
+ // words long, but `a` has an additional word specified by `carry`. `carry` must
563
+ // be zero or one, as implied by the bounds on `a`.
484
564
  //
485
- // |r|, |a|, and |m| may not alias. Use |bn_reduce_once_in_place| if |r| and |a|
565
+ // `r`, `a`, and `m` may not alias. Use `bn_reduce_once_in_place` if `r` and `a`
486
566
  // must alias.
487
567
  BN_ULONG bn_reduce_once(BN_ULONG *r, const BN_ULONG *a, BN_ULONG carry,
488
568
  const BN_ULONG *m, size_t num);
489
569
 
490
- // bn_reduce_once_in_place behaves like |bn_reduce_once| but acts in-place on
491
- // |r|, using |tmp| as scratch space. |r|, |tmp|, and |m| may not alias.
570
+ // bn_reduce_once_in_place behaves like `bn_reduce_once` but acts in-place on
571
+ // `r`, using `tmp` as scratch space. `r`, `tmp`, and `m` may not alias.
492
572
  BN_ULONG bn_reduce_once_in_place(BN_ULONG *r, BN_ULONG carry, const BN_ULONG *m,
493
573
  BN_ULONG *tmp, size_t num);
494
574
 
@@ -496,64 +576,64 @@ BN_ULONG bn_reduce_once_in_place(BN_ULONG *r, BN_ULONG carry, const BN_ULONG *m,
496
576
  // Constant-time non-modular arithmetic.
497
577
  //
498
578
  // The following functions implement non-modular arithmetic in constant-time
499
- // and pessimally set |r->width| to the largest possible word size.
579
+ // and pessimally set `r->width` to the largest possible word size.
500
580
  //
501
581
  // Note this means that, e.g., repeatedly multiplying by one will cause widths
502
582
  // to increase without bound. The corresponding public API functions minimize
503
583
  // their outputs to avoid regressing calculator consumers.
504
584
 
505
- // bn_uadd_consttime behaves like |BN_uadd|, but it pessimally sets
506
- // |r->width| = |a->width| + |b->width| + 1.
585
+ // bn_uadd_consttime behaves like `BN_uadd`, but it pessimally sets
586
+ // `r->width` = `a->width` + `b->width` + 1.
507
587
  int bn_uadd_consttime(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
508
588
 
509
- // bn_usub_consttime behaves like |BN_usub|, but it pessimally sets
510
- // |r->width| = |a->width|.
589
+ // bn_usub_consttime behaves like `BN_usub`, but it pessimally sets
590
+ // `r->width` = `a->width`.
511
591
  int bn_usub_consttime(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
512
592
 
513
- // bn_abs_sub_consttime sets |r| to the absolute value of |a| - |b|, treating
593
+ // bn_abs_sub_consttime sets `r` to the absolute value of `a` - `b`, treating
514
594
  // both inputs as secret. It returns one on success and zero on error.
515
595
  OPENSSL_EXPORT int bn_abs_sub_consttime(BIGNUM *r, const BIGNUM *a,
516
596
  const BIGNUM *b, BN_CTX *ctx);
517
597
 
518
- // bn_mul_consttime behaves like |BN_mul|, but it rejects negative inputs and
519
- // pessimally sets |r->width| to |a->width| + |b->width|, to avoid leaking
520
- // information about |a| and |b|.
598
+ // bn_mul_consttime behaves like `BN_mul`, but it rejects negative inputs and
599
+ // pessimally sets `r->width` to `a->width` + `b->width`, to avoid leaking
600
+ // information about `a` and `b`.
521
601
  int bn_mul_consttime(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
522
602
 
523
- // bn_sqrt_consttime behaves like |BN_sqrt|, but it pessimally sets |r->width|
524
- // to 2*|a->width|, to avoid leaking information about |a| and |b|.
603
+ // bn_sqrt_consttime behaves like `BN_sqrt`, but it pessimally sets `r->width`
604
+ // to 2*`a->width`, to avoid leaking information about `a` and `b`.
525
605
  int bn_sqr_consttime(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx);
526
606
 
527
- // bn_div_consttime behaves like |BN_div|, but it rejects negative inputs and
607
+ // bn_div_consttime behaves like `BN_div`, but it rejects negative inputs and
528
608
  // treats both inputs, including their magnitudes, as secret. It is, as a
529
- // result, much slower than |BN_div| and should only be used for rare operations
530
- // where Montgomery reduction is not available. |divisor_min_bits| is a
531
- // public lower bound for |BN_num_bits(divisor)|. When |divisor|'s bit width is
609
+ // result, much slower than `BN_div` and should only be used for rare operations
610
+ // where Montgomery reduction is not available. `divisor_min_bits` is a
611
+ // public lower bound for `BN_num_bits(divisor)`. When `divisor`'s bit width is
532
612
  // public, this can speed up the operation.
533
613
  //
534
- // Note that |quotient->width| will be set pessimally to |numerator->width|.
614
+ // Note that `quotient->width` will be set pessimally to `numerator->width`.
535
615
  OPENSSL_EXPORT int bn_div_consttime(BIGNUM *quotient, BIGNUM *remainder,
536
616
  const BIGNUM *numerator,
537
617
  const BIGNUM *divisor,
538
618
  unsigned divisor_min_bits, BN_CTX *ctx);
539
619
 
540
- // bn_is_relatively_prime checks whether GCD(|x|, |y|) is one. On success, it
541
- // returns one and sets |*out_relatively_prime| to one if the GCD was one and
620
+ // bn_is_relatively_prime checks whether GCD(`x`, `y`) is one. On success, it
621
+ // returns one and sets `*out_relatively_prime` to one if the GCD was one and
542
622
  // zero otherwise. On error, it returns zero.
543
623
  OPENSSL_EXPORT int bn_is_relatively_prime(int *out_relatively_prime,
544
624
  const BIGNUM *x, const BIGNUM *y,
545
625
  BN_CTX *ctx);
546
626
 
547
- // bn_lcm_consttime sets |r| to LCM(|a|, |b|). It returns one and success and
548
- // zero on error. |a| and |b| are both treated as secret.
627
+ // bn_lcm_consttime sets `r` to LCM(`a`, `b`). It returns one and success and
628
+ // zero on error. `a` and `b` are both treated as secret.
549
629
  OPENSSL_EXPORT int bn_lcm_consttime(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
550
630
  BN_CTX *ctx);
551
631
 
552
- // bn_mont_ctx_init zero-initialies |mont|.
632
+ // bn_mont_ctx_init zero-initialies `mont`.
553
633
  void bn_mont_ctx_init(BN_MONT_CTX *mont);
554
634
 
555
- // bn_mont_ctx_cleanup releases memory associated with |mont|, without freeing
556
- // |mont| itself.
635
+ // bn_mont_ctx_cleanup releases memory associated with `mont`, without freeing
636
+ // `mont` itself.
557
637
  void bn_mont_ctx_cleanup(BN_MONT_CTX *mont);
558
638
 
559
639
 
@@ -561,66 +641,66 @@ void bn_mont_ctx_cleanup(BN_MONT_CTX *mont);
561
641
  //
562
642
  // The following functions implement basic constant-time modular arithmetic.
563
643
 
564
- // bn_mod_add_words sets |r| to |a| + |b| (mod |m|), using |tmp| as scratch
565
- // space. Each array is |num| words long. |a| and |b| must be < |m|. Any pair of
566
- // |r|, |a|, and |b| may alias.
644
+ // bn_mod_add_words sets `r` to `a` + `b` (mod `m`), using `tmp` as scratch
645
+ // space. Each array is `num` words long. `a` and `b` must be < `m`. Any pair of
646
+ // `r`, `a`, and `b` may alias.
567
647
  void bn_mod_add_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
568
648
  const BN_ULONG *m, BN_ULONG *tmp, size_t num);
569
649
 
570
- // bn_mod_add_consttime acts like |BN_mod_add_quick| but takes a |BN_CTX|.
650
+ // bn_mod_add_consttime acts like `BN_mod_add_quick` but takes a `BN_CTX`.
571
651
  int bn_mod_add_consttime(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
572
652
  const BIGNUM *m, BN_CTX *ctx);
573
653
 
574
- // bn_mod_sub_words sets |r| to |a| - |b| (mod |m|), using |tmp| as scratch
575
- // space. Each array is |num| words long. |a| and |b| must be < |m|. Any pair of
576
- // |r|, |a|, and |b| may alias.
654
+ // bn_mod_sub_words sets `r` to `a` - `b` (mod `m`), using `tmp` as scratch
655
+ // space. Each array is `num` words long. `a` and `b` must be < `m`. Any pair of
656
+ // `r`, `a`, and `b` may alias.
577
657
  void bn_mod_sub_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
578
658
  const BN_ULONG *m, BN_ULONG *tmp, size_t num);
579
659
 
580
- // bn_mod_sub_consttime acts like |BN_mod_sub_quick| but takes a |BN_CTX|.
660
+ // bn_mod_sub_consttime acts like `BN_mod_sub_quick` but takes a `BN_CTX`.
581
661
  int bn_mod_sub_consttime(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
582
662
  const BIGNUM *m, BN_CTX *ctx);
583
663
 
584
- // bn_mod_lshift1_consttime acts like |BN_mod_lshift1_quick| but takes a
585
- // |BN_CTX|.
664
+ // bn_mod_lshift1_consttime acts like `BN_mod_lshift1_quick` but takes a
665
+ // `BN_CTX`.
586
666
  int bn_mod_lshift1_consttime(BIGNUM *r, const BIGNUM *a, const BIGNUM *m,
587
667
  BN_CTX *ctx);
588
668
 
589
- // bn_mod_lshift_consttime acts like |BN_mod_lshift_quick| but takes a |BN_CTX|.
669
+ // bn_mod_lshift_consttime acts like `BN_mod_lshift_quick` but takes a `BN_CTX`.
590
670
  int bn_mod_lshift_consttime(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m,
591
671
  BN_CTX *ctx);
592
672
 
593
- // bn_mod_inverse_consttime sets |r| to |a|^-1, mod |n|. |a| must be non-
594
- // negative and less than |n|. It returns one on success and zero on error. On
595
- // failure, if the failure was caused by |a| having no inverse mod |n| then
596
- // |*out_no_inverse| will be set to one; otherwise it will be set to zero.
673
+ // bn_mod_inverse_consttime sets `r` to `a`^-1, mod `n`. `a` must be non-
674
+ // negative and less than `n`. It returns one on success and zero on error. On
675
+ // failure, if the failure was caused by `a` having no inverse mod `n` then
676
+ // `*out_no_inverse` will be set to one; otherwise it will be set to zero.
597
677
  //
598
- // This function treats both |a| and |n| as secret, provided they are both non-
678
+ // This function treats both `a` and `n` as secret, provided they are both non-
599
679
  // zero and the inverse exists. It should only be used for even moduli where
600
680
  // none of the less general implementations are applicable.
601
681
  OPENSSL_EXPORT int bn_mod_inverse_consttime(BIGNUM *r, int *out_no_inverse,
602
682
  const BIGNUM *a, const BIGNUM *n,
603
683
  BN_CTX *ctx);
604
684
 
605
- // bn_mod_inverse_prime sets |out| to the modular inverse of |a| modulo |p|,
685
+ // bn_mod_inverse_prime sets `out` to the modular inverse of `a` modulo `p`,
606
686
  // computed with Fermat's Little Theorem. It returns one on success and zero on
607
- // error. If |mont_p| is NULL, one will be computed temporarily.
687
+ // error. If `mont_p` is NULL, one will be computed temporarily.
608
688
  int bn_mod_inverse_prime(BIGNUM *out, const BIGNUM *a, const BIGNUM *p,
609
689
  BN_CTX *ctx, const BN_MONT_CTX *mont_p);
610
690
 
611
- // bn_mod_inverse_secret_prime behaves like |bn_mod_inverse_prime| but uses
612
- // |BN_mod_exp_mont_consttime| instead of |BN_mod_exp_mont| in hopes of
691
+ // bn_mod_inverse_secret_prime behaves like `bn_mod_inverse_prime` but uses
692
+ // `BN_mod_exp_mont_consttime` instead of `BN_mod_exp_mont` in hopes of
613
693
  // protecting the exponent.
614
694
  int bn_mod_inverse_secret_prime(BIGNUM *out, const BIGNUM *a, const BIGNUM *p,
615
695
  BN_CTX *ctx, const BN_MONT_CTX *mont_p);
616
696
 
617
- // BN_MONT_CTX_set_locked takes |lock| and checks whether |*pmont| is NULL. If
618
- // so, it creates a new |BN_MONT_CTX| and sets the modulus for it to |mod|. It
619
- // then stores it as |*pmont|. It returns one on success and zero on error. Note
620
- // this function assumes |mod| is public.
697
+ // BN_MONT_CTX_set_locked takes `lock` and checks whether `*pmont` is NULL. If
698
+ // so, it creates a new `BN_MONT_CTX` and sets the modulus for it to `mod`. It
699
+ // then stores it as `*pmont`. It returns one on success and zero on error. Note
700
+ // this function assumes `mod` is public.
621
701
  //
622
- // If |*pmont| is already non-NULL then it does nothing and returns one.
623
- int BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, CRYPTO_MUTEX *lock,
702
+ // If `*pmont` is already non-NULL then it does nothing and returns one.
703
+ int BN_MONT_CTX_set_locked(UniquePtr<BN_MONT_CTX> *pmont, Mutex *lock,
624
704
  const BIGNUM *mod, BN_CTX *bn_ctx);
625
705
 
626
706
 
@@ -640,87 +720,85 @@ int BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, CRYPTO_MUTEX *lock,
640
720
  #define BN_SMALL_MAX_WORDS 9
641
721
  #endif
642
722
 
643
- // bn_mul_small sets |r| to |a|*|b|. |num_r| must be |num_a| + |num_b|. |r| may
644
- // not alias with |a| or |b|.
723
+ // bn_mul_small sets `r` to `a`*`b`. `num_r` must be `num_a` + `num_b`. `r` may
724
+ // not alias with `a` or `b`.
645
725
  void bn_mul_small(BN_ULONG *r, size_t num_r, const BN_ULONG *a, size_t num_a,
646
726
  const BN_ULONG *b, size_t num_b);
647
727
 
648
- // bn_sqr_small sets |r| to |a|^2. |num_a| must be at most |BN_SMALL_MAX_WORDS|.
649
- // |num_r| must be |num_a|*2. |r| and |a| may not alias.
728
+ // bn_sqr_small sets `r` to `a`^2. `num_r` must be `num_a`*2. `r` and `a` may
729
+ // not alias.
650
730
  void bn_sqr_small(BN_ULONG *r, size_t num_r, const BN_ULONG *a, size_t num_a);
651
731
 
652
- // In the following functions, the modulus must be at most |BN_SMALL_MAX_WORDS|
732
+ // In the following functions, the modulus must be at most `BN_SMALL_MAX_WORDS`
653
733
  // words long.
654
734
 
655
- // bn_to_montgomery_small sets |r| to |a| translated to the Montgomery domain.
656
- // |r| and |a| are |num| words long, which must be |mont->N.width|. |a| must be
657
- // fully reduced and may alias |r|.
735
+ // bn_to_montgomery_small sets `r` to `a` translated to the Montgomery domain.
736
+ // `r` and `a` are `num` words long, which must be `mont->N.width`. `a` must be
737
+ // fully reduced and may alias `r`.
658
738
  void bn_to_montgomery_small(BN_ULONG *r, const BN_ULONG *a, size_t num,
659
739
  const BN_MONT_CTX *mont);
660
740
 
661
- // bn_from_montgomery_small sets |r| to |a| translated out of the Montgomery
662
- // domain. |r| and |a| are |num_r| and |num_a| words long, respectively. |num_r|
663
- // must be |mont->N.width|. |a| must be at most |mont->N|^2 and may alias |r|.
741
+ // bn_from_montgomery_small sets `r` to `a` translated out of the Montgomery
742
+ // domain. `r` and `a` are `num_r` and `num_a` words long, respectively. `num_r`
743
+ // must be `mont->N.width`. `a` must be at most `mont->N`^2 and may alias `r`.
664
744
  //
665
- // Unlike most of these functions, only |num_r| is bounded by
666
- // |BN_SMALL_MAX_WORDS|. |num_a| may exceed it, but must be at most 2 * |num_r|.
745
+ // Unlike most of these functions, only `num_r` is bounded by
746
+ // `BN_SMALL_MAX_WORDS`. `num_a` may exceed it, but must be at most 2 * `num_r`.
667
747
  void bn_from_montgomery_small(BN_ULONG *r, size_t num_r, const BN_ULONG *a,
668
748
  size_t num_a, const BN_MONT_CTX *mont);
669
749
 
670
- // bn_mod_mul_montgomery_small sets |r| to |a| * |b| mod |mont->N|. Both inputs
671
- // and outputs are in the Montgomery domain. Each array is |num| words long,
672
- // which must be |mont->N.width|. Any two of |r|, |a|, and |b| may alias. |a|
673
- // and |b| must be reduced on input.
750
+ // bn_mod_mul_montgomery_small sets `r` to `a` * `b` mod `mont->N`. Both inputs
751
+ // and outputs are in the Montgomery domain. Each array is `num` words long,
752
+ // which must be `mont->N.width`. Any two of `r`, `a`, and `b` may alias. `a`
753
+ // and `b` must be reduced on input.
674
754
  void bn_mod_mul_montgomery_small(BN_ULONG *r, const BN_ULONG *a,
675
755
  const BN_ULONG *b, size_t num,
676
756
  const BN_MONT_CTX *mont);
677
757
 
678
- // bn_mod_exp_mont_small sets |r| to |a|^|p| mod |mont->N|. It returns one on
758
+ // bn_mod_exp_mont_small sets `r` to `a`^`p` mod `mont->N`. It returns one on
679
759
  // success and zero on programmer or internal error. Both inputs and outputs are
680
- // in the Montgomery domain. |r| and |a| are |num| words long, which must be
681
- // |mont->N.width| and at most |BN_SMALL_MAX_WORDS|. |num_p|, measured in bits,
682
- // must fit in |size_t|. |a| must be fully-reduced. This function runs in time
683
- // independent of |a|, but |p| and |mont->N| are public values. |a| must be
684
- // fully-reduced and may alias with |r|.
760
+ // in the Montgomery domain. `r` and `a` are `num` words long, which must be
761
+ // `mont->N.width` and at most `BN_SMALL_MAX_WORDS`. `num_p`, measured in bits,
762
+ // must fit in `size_t`. `a` must be fully-reduced. This function runs in time
763
+ // independent of `a`, but `p` and `mont->N` are public values. `a` must be
764
+ // fully-reduced and may alias with `r`.
685
765
  //
686
- // Note this function differs from |BN_mod_exp_mont| which uses Montgomery
766
+ // Note this function differs from `BN_mod_exp_mont` which uses Montgomery
687
767
  // reduction but takes input and output outside the Montgomery domain. Combine
688
- // this function with |bn_from_montgomery_small| and |bn_to_montgomery_small|
768
+ // this function with `bn_from_montgomery_small` and `bn_to_montgomery_small`
689
769
  // if necessary.
690
770
  void bn_mod_exp_mont_small(BN_ULONG *r, const BN_ULONG *a, size_t num,
691
771
  const BN_ULONG *p, size_t num_p,
692
772
  const BN_MONT_CTX *mont);
693
773
 
694
- // bn_mod_inverse0_prime_mont_small sets |r| to |a|^-1 mod |mont->N|. If |a| is
695
- // zero, |r| is set to zero. |mont->N| must be a prime. |r| and |a| are |num|
696
- // words long, which must be |mont->N.width| and at most |BN_SMALL_MAX_WORDS|.
697
- // |a| must be fully-reduced and may alias |r|. This function runs in time
698
- // independent of |a|, but |mont->N| is a public value.
774
+ // bn_mod_inverse0_prime_mont_small sets `r` to `a`^-1 mod `mont->N`. If `a` is
775
+ // zero, `r` is set to zero. `mont->N` must be a prime. `r` and `a` are `num`
776
+ // words long, which must be `mont->N.width` and at most `BN_SMALL_MAX_WORDS`.
777
+ // `a` must be fully-reduced and may alias `r`. This function runs in time
778
+ // independent of `a`, but `mont->N` is a public value.
699
779
  void bn_mod_inverse0_prime_mont_small(BN_ULONG *r, const BN_ULONG *a,
700
780
  size_t num, const BN_MONT_CTX *mont);
701
781
 
702
782
 
703
783
  // Word-based byte conversion functions.
704
784
 
705
- // bn_big_endian_to_words interprets |in_len| bytes from |in| as a big-endian,
706
- // unsigned integer and writes the result to |out_len| words in |out|. |out_len|
707
- // must be large enough to represent any |in_len|-byte value. That is, |in_len|
708
- // must be at most |BN_BYTES * out_len|.
785
+ // bn_big_endian_to_words interprets `in_len` bytes from `in` as a big-endian,
786
+ // unsigned integer and writes the result to `out_len` words in `out`. `out_len`
787
+ // must be large enough to represent any `in_len`-byte value. That is, `in_len`
788
+ // must be at most `BN_BYTES * out_len`.
709
789
  void bn_big_endian_to_words(BN_ULONG *out, size_t out_len, const uint8_t *in,
710
790
  size_t in_len);
711
791
 
712
- // bn_words_to_big_endian represents |in_len| words from |in| as a big-endian,
713
- // unsigned integer in |out_len| bytes. It writes the result to |out|. |out_len|
714
- // must be large enough to represent |in| without truncation.
792
+ // bn_words_to_big_endian represents `in_len` words from `in` as a big-endian,
793
+ // unsigned integer in `out_len` bytes. It writes the result to `out`. `out_len`
794
+ // must be large enough to represent `in` without truncation.
715
795
  //
716
- // Note |out_len| may be less than |BN_BYTES * in_len| if |in| is known to have
796
+ // Note `out_len` may be less than `BN_BYTES * in_len` if `in` is known to have
717
797
  // leading zeros.
718
798
  void bn_words_to_big_endian(uint8_t *out, size_t out_len, const BN_ULONG *in,
719
799
  size_t in_len);
720
800
 
801
+ BSSL_NAMESPACE_END
721
802
 
722
- #if defined(__cplusplus)
723
- } // extern C
724
- #endif
725
803
 
726
804
  #endif // OPENSSL_HEADER_CRYPTO_FIPSMODULE_BN_INTERNAL_H