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
@@ -23,7 +23,6 @@
23
23
  #include <openssl/err.h> // for ERR_print_errors_fp
24
24
  #include <openssl/ex_data.h>
25
25
  #include <openssl/stack.h>
26
- #include <openssl/thread.h>
27
26
 
28
27
  #if defined(__cplusplus)
29
28
  extern "C" {
@@ -38,52 +37,66 @@ extern "C" {
38
37
  DEFINE_STACK_OF(BIO)
39
38
 
40
39
  // BIO_new creates a new BIO with the given method and a reference count of one.
41
- // It returns the fresh |BIO|, or NULL on error.
40
+ // It returns the fresh `BIO`, or NULL on error.
42
41
  OPENSSL_EXPORT BIO *BIO_new(const BIO_METHOD *method);
43
42
 
44
- // BIO_free decrements the reference count of |bio|. If the reference count
43
+ // BIO_free decrements the reference count of `bio`. If the reference count
45
44
  // drops to zero, it calls the destroy callback, if present, on the method and
46
- // frees |bio| itself. It then repeats that for the next BIO in the chain, if
47
- // any.
45
+ // frees `bio` itself. If `bio` is part of a chain (see `BIO_push`), this will
46
+ // also free the next `BIO` in the chain, and so on.
48
47
  //
49
- // It returns one on success or zero otherwise.
48
+ // It returns one if `bio` was NULL or freed. It returns zero if `bio` was
49
+ // shared and some other owner still owns a reference count to it.
50
+ //
51
+ // WARNING: Do not use the return value. Returning zero is not a sign of an
52
+ // error, nor an indication to retry the operation. `BIO` is a reference-counted
53
+ // type. A given `BIO` object may be shared between multiple parts of an
54
+ // application. To correctly track the reference count, without leaks or
55
+ // use-after-free, each part of the application must release only the reference
56
+ // counts it owns.
50
57
  OPENSSL_EXPORT int BIO_free(BIO *bio);
51
58
 
52
- // BIO_vfree performs the same actions as |BIO_free|, but has a void return
59
+ // BIO_vfree performs the same actions as `BIO_free`, but has a void return
53
60
  // value. This is provided for API-compat.
54
61
  //
55
62
  // TODO(fork): remove.
56
63
  OPENSSL_EXPORT void BIO_vfree(BIO *bio);
57
64
 
58
- // BIO_up_ref increments the reference count of |bio| and returns one.
65
+ // BIO_up_ref increments the reference count of `bio` and returns one.
59
66
  OPENSSL_EXPORT int BIO_up_ref(BIO *bio);
60
67
 
61
68
 
62
69
  // Basic I/O.
63
70
 
64
- // BIO_read attempts to read |len| bytes into |data|. It returns the number of
71
+ // BIO_read attempts to read `len` bytes into `data`. It returns the number of
65
72
  // bytes read, zero on EOF, or a negative number on error.
66
73
  OPENSSL_EXPORT int BIO_read(BIO *bio, void *data, int len);
67
74
 
68
- // BIO_gets reads a line from |bio| and writes at most |size| bytes into |buf|.
75
+ // BIO_gets reads a line from `bio` and writes at most `size` bytes into `buf`.
69
76
  // It returns the number of bytes read or a negative number on error. This
70
77
  // function's output always includes a trailing NUL byte, so it will read at
71
- // most |size - 1| bytes.
78
+ // most `size - 1` bytes.
72
79
  //
73
80
  // If the function read a complete line, the output will include the newline
74
- // character, '\n'. If no newline was found before |size - 1| bytes or EOF, it
81
+ // character, '\n'. If no newline was found before `size - 1` bytes or EOF, it
75
82
  // outputs the bytes which were available.
76
83
  OPENSSL_EXPORT int BIO_gets(BIO *bio, char *buf, int size);
77
84
 
78
- // BIO_write writes |len| bytes from |data| to |bio|. It returns the number of
85
+ // BIO_write_ex writes `len` bytes from `data` to `bio`. On success, it returns
86
+ // one and sets `*out_written` to the number of bytes written. Otherwise, it
87
+ // returns zero. `out_written` may be NULL to ignore the value.
88
+ OPENSSL_EXPORT int BIO_write_ex(BIO *bio, const void *data, size_t len,
89
+ size_t *out_written);
90
+
91
+ // BIO_write writes `len` bytes from `data` to `bio`. It returns the number of
79
92
  // bytes written or a negative number on error.
80
93
  OPENSSL_EXPORT int BIO_write(BIO *bio, const void *data, int len);
81
94
 
82
- // BIO_write_all writes |len| bytes from |data| to |bio|, looping as necessary.
95
+ // BIO_write_all writes `len` bytes from `data` to `bio`, looping as necessary.
83
96
  // It returns one if all bytes were successfully written and zero on error.
84
97
  OPENSSL_EXPORT int BIO_write_all(BIO *bio, const void *data, size_t len);
85
98
 
86
- // BIO_puts writes a NUL terminated string from |buf| to |bio|. It returns the
99
+ // BIO_puts writes a NUL terminated string from `buf` to `bio`. It returns the
87
100
  // number of bytes written or a negative number on error.
88
101
  OPENSSL_EXPORT int BIO_puts(BIO *bio, const char *buf);
89
102
 
@@ -95,43 +108,53 @@ OPENSSL_EXPORT int BIO_flush(BIO *bio);
95
108
  // Low-level control functions.
96
109
  //
97
110
  // These are generic functions for sending control requests to a BIO. In
98
- // general one should use the wrapper functions like |BIO_get_close|.
111
+ // general one should use the wrapper functions like `BIO_get_close`.
99
112
 
100
- // BIO_ctrl sends the control request |cmd| to |bio|. The |cmd| argument should
101
- // be one of the |BIO_C_*| values.
113
+ // BIO_ctrl sends the control request `cmd` to `bio`. The `cmd` argument should
114
+ // be one of the `BIO_C_*` values.
102
115
  OPENSSL_EXPORT long BIO_ctrl(BIO *bio, int cmd, long larg, void *parg);
103
116
 
104
- // BIO_ptr_ctrl acts like |BIO_ctrl| but passes the address of a |void*|
105
- // pointer as |parg| and returns the value that is written to it, or NULL if
117
+ // BIO_ptr_ctrl acts like `BIO_ctrl` but passes the address of a `void*`
118
+ // pointer as `parg` and returns the value that is written to it, or NULL if
106
119
  // the control request returns <= 0.
107
120
  OPENSSL_EXPORT char *BIO_ptr_ctrl(BIO *bp, int cmd, long larg);
108
121
 
109
- // BIO_int_ctrl acts like |BIO_ctrl| but passes the address of a copy of |iarg|
110
- // as |parg|.
122
+ // BIO_int_ctrl acts like `BIO_ctrl` but passes the address of a copy of `iarg`
123
+ // as `parg`.
111
124
  OPENSSL_EXPORT long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg);
112
125
 
113
- // BIO_reset resets |bio| to its initial state, the precise meaning of which
114
- // depends on the concrete type of |bio|. It returns one on success and zero
115
- // otherwise.
126
+ // BIO_reset resets `bio` to its initial state, the precise meaning of which
127
+ // depends on the concrete type of `bio`. It normally returns one on success and
128
+ // <= 0 otherwise. However, for file and fd BIOs, it returns zero on success and
129
+ // a negative number on error.
130
+ //
131
+ // WARNING: This function's return value conventions differs from most functions
132
+ // in this library.
116
133
  OPENSSL_EXPORT int BIO_reset(BIO *bio);
117
134
 
118
- // BIO_eof returns non-zero when |bio| has reached end-of-file. The precise
119
- // meaning of which depends on the concrete type of |bio|. Note that in the
135
+ // BIO_eof returns non-zero when `bio` has reached end-of-file. The precise
136
+ // meaning of which depends on the concrete type of `bio`. Note that in the
120
137
  // case of BIO_pair this always returns non-zero.
121
138
  OPENSSL_EXPORT int BIO_eof(BIO *bio);
122
139
 
123
- // BIO_set_flags ORs |flags| with |bio->flags|.
140
+ // BIO_set_flags ORs `flags` with `bio->flags`. Unless otherwise documented,
141
+ // flags are private to either BoringSSL or the custom `BIO_METHOD`.
124
142
  OPENSSL_EXPORT void BIO_set_flags(BIO *bio, int flags);
125
143
 
126
- // BIO_test_flags returns |bio->flags| AND |flags|.
144
+ // BIO_clear_flags ANDs `bio->flags` with the bitwise-complement of `flags`.
145
+ // Unless otherwise documented, flags are private to either BoringSSL or the
146
+ // custom `BIO_METHOD`.
147
+ OPENSSL_EXPORT void BIO_clear_flags(BIO *bio, int flags);
148
+
149
+ // BIO_test_flags returns `bio->flags` AND `flags`.
127
150
  OPENSSL_EXPORT int BIO_test_flags(const BIO *bio, int flags);
128
151
 
129
- // BIO_should_read returns non-zero if |bio| encountered a temporary error
152
+ // BIO_should_read returns non-zero if `bio` encountered a temporary error
130
153
  // while reading (i.e. EAGAIN), indicating that the caller should retry the
131
154
  // read.
132
155
  OPENSSL_EXPORT int BIO_should_read(const BIO *bio);
133
156
 
134
- // BIO_should_write returns non-zero if |bio| encountered a temporary error
157
+ // BIO_should_write returns non-zero if `bio` encountered a temporary error
135
158
  // while writing (i.e. EAGAIN), indicating that the caller should retry the
136
159
  // write.
137
160
  OPENSSL_EXPORT int BIO_should_write(const BIO *bio);
@@ -141,10 +164,10 @@ OPENSSL_EXPORT int BIO_should_write(const BIO *bio);
141
164
  // it was a permanent error and it returns zero.
142
165
  OPENSSL_EXPORT int BIO_should_retry(const BIO *bio);
143
166
 
144
- // BIO_should_io_special returns non-zero if |bio| encountered a temporary
167
+ // BIO_should_io_special returns non-zero if `bio` encountered a temporary
145
168
  // error while performing a special I/O operation, indicating that the caller
146
169
  // should retry. The operation that caused the error is returned by
147
- // |BIO_get_retry_reason|.
170
+ // `BIO_get_retry_reason`.
148
171
  OPENSSL_EXPORT int BIO_should_io_special(const BIO *bio);
149
172
 
150
173
  // BIO_RR_CONNECT indicates that a connect would have blocked
@@ -154,83 +177,62 @@ OPENSSL_EXPORT int BIO_should_io_special(const BIO *bio);
154
177
  #define BIO_RR_ACCEPT 0x03
155
178
 
156
179
  // BIO_get_retry_reason returns the special I/O operation that needs to be
157
- // retried. The return value is one of the |BIO_RR_*| values.
180
+ // retried. The return value is one of the `BIO_RR_*` values.
158
181
  OPENSSL_EXPORT int BIO_get_retry_reason(const BIO *bio);
159
182
 
160
183
  // BIO_set_retry_reason sets the special I/O operation that needs to be retried
161
- // to |reason|, which should be one of the |BIO_RR_*| values.
184
+ // to `reason`, which should be one of the `BIO_RR_*` values.
162
185
  OPENSSL_EXPORT void BIO_set_retry_reason(BIO *bio, int reason);
163
186
 
164
- // BIO_clear_flags ANDs |bio->flags| with the bitwise-complement of |flags|.
165
- OPENSSL_EXPORT void BIO_clear_flags(BIO *bio, int flags);
166
-
167
- // BIO_set_retry_read sets the |BIO_FLAGS_READ| and |BIO_FLAGS_SHOULD_RETRY|
168
- // flags on |bio|.
187
+ // BIO_set_retry_read sets the `BIO_FLAGS_READ` and `BIO_FLAGS_SHOULD_RETRY`
188
+ // flags on `bio`.
169
189
  OPENSSL_EXPORT void BIO_set_retry_read(BIO *bio);
170
190
 
171
- // BIO_set_retry_write sets the |BIO_FLAGS_WRITE| and |BIO_FLAGS_SHOULD_RETRY|
172
- // flags on |bio|.
191
+ // BIO_set_retry_write sets the `BIO_FLAGS_WRITE` and `BIO_FLAGS_SHOULD_RETRY`
192
+ // flags on `bio`.
173
193
  OPENSSL_EXPORT void BIO_set_retry_write(BIO *bio);
174
194
 
175
- // BIO_get_retry_flags gets the |BIO_FLAGS_READ|, |BIO_FLAGS_WRITE|,
176
- // |BIO_FLAGS_IO_SPECIAL| and |BIO_FLAGS_SHOULD_RETRY| flags from |bio|.
195
+ // BIO_get_retry_flags gets the `BIO_FLAGS_READ`, `BIO_FLAGS_WRITE`,
196
+ // `BIO_FLAGS_IO_SPECIAL` and `BIO_FLAGS_SHOULD_RETRY` flags from `bio`.
177
197
  OPENSSL_EXPORT int BIO_get_retry_flags(BIO *bio);
178
198
 
179
- // BIO_clear_retry_flags clears the |BIO_FLAGS_READ|, |BIO_FLAGS_WRITE|,
180
- // |BIO_FLAGS_IO_SPECIAL| and |BIO_FLAGS_SHOULD_RETRY| flags from |bio|.
199
+ // BIO_clear_retry_flags clears the `BIO_FLAGS_READ`, `BIO_FLAGS_WRITE`,
200
+ // `BIO_FLAGS_IO_SPECIAL` and `BIO_FLAGS_SHOULD_RETRY` flags from `bio`.
181
201
  OPENSSL_EXPORT void BIO_clear_retry_flags(BIO *bio);
182
202
 
183
- // BIO_method_type returns the type of |bio|, which is one of the |BIO_TYPE_*|
203
+ // BIO_method_type returns the type of `bio`, which is one of the `BIO_TYPE_*`
184
204
  // values.
185
205
  OPENSSL_EXPORT int BIO_method_type(const BIO *bio);
186
206
 
187
- // These are passed to the BIO callback
188
- #define BIO_CB_FREE 0x01
189
- #define BIO_CB_READ 0x02
190
- #define BIO_CB_WRITE 0x03
191
- #define BIO_CB_PUTS 0x04
192
- #define BIO_CB_GETS 0x05
193
- #define BIO_CB_CTRL 0x06
194
-
195
- // The callback is called before and after the underling operation,
196
- // The BIO_CB_RETURN flag indicates if it is after the call
197
- #define BIO_CB_RETURN 0x80
198
-
199
- // bio_info_cb is the type of a callback function that can be called for most
200
- // BIO operations. The |event| argument is one of |BIO_CB_*| and can be ORed
201
- // with |BIO_CB_RETURN| if the callback is being made after the operation in
202
- // question. In that case, |return_value| will contain the return value from
203
- // the operation.
204
- typedef long (*bio_info_cb)(BIO *bio, int event, const char *parg, int cmd,
205
- long larg, long return_value);
206
-
207
- // BIO_callback_ctrl allows the callback function to be manipulated. The |cmd|
208
- // arg will generally be |BIO_CTRL_SET_CALLBACK| but arbitrary command values
209
- // can be interpreted by the |BIO|.
210
- OPENSSL_EXPORT long BIO_callback_ctrl(BIO *bio, int cmd, bio_info_cb fp);
207
+ typedef int BIO_info_cb(BIO *, int, int);
208
+
209
+ // BIO_callback_ctrl allows the callback function to be manipulated. The `cmd`
210
+ // arg will generally be `BIO_CTRL_SET_CALLBACK` but arbitrary command values
211
+ // can be interpreted by the `BIO`.
212
+ OPENSSL_EXPORT long BIO_callback_ctrl(BIO *bio, int cmd, BIO_info_cb *fp);
211
213
 
212
214
  // BIO_pending returns the number of bytes pending to be read.
213
215
  OPENSSL_EXPORT size_t BIO_pending(const BIO *bio);
214
216
 
215
- // BIO_ctrl_pending calls |BIO_pending| and exists only for compatibility with
217
+ // BIO_ctrl_pending calls `BIO_pending` and exists only for compatibility with
216
218
  // OpenSSL.
217
219
  OPENSSL_EXPORT size_t BIO_ctrl_pending(const BIO *bio);
218
220
 
219
221
  // BIO_wpending returns the number of bytes pending to be written.
220
222
  OPENSSL_EXPORT size_t BIO_wpending(const BIO *bio);
221
223
 
222
- // BIO_set_close sets the close flag for |bio|. The meaning of which depends on
223
- // the type of |bio| but, for example, a memory BIO interprets the close flag
224
+ // BIO_set_close sets the close flag for `bio`. The meaning of which depends on
225
+ // the type of `bio` but, for example, a memory BIO interprets the close flag
224
226
  // as meaning that it owns its buffer. It returns one on success and zero
225
227
  // otherwise.
226
228
  OPENSSL_EXPORT int BIO_set_close(BIO *bio, int close_flag);
227
229
 
228
230
  // BIO_number_read returns the number of bytes that have been read from
229
- // |bio|.
231
+ // `bio`.
230
232
  OPENSSL_EXPORT uint64_t BIO_number_read(const BIO *bio);
231
233
 
232
234
  // BIO_number_written returns the number of bytes that have been written to
233
- // |bio|.
235
+ // `bio`.
234
236
  OPENSSL_EXPORT uint64_t BIO_number_written(const BIO *bio);
235
237
 
236
238
 
@@ -240,40 +242,41 @@ OPENSSL_EXPORT uint64_t BIO_number_written(const BIO *bio);
240
242
  // the next etc. The most common case is a buffering BIO, which accepts and
241
243
  // buffers writes until flushed into the next BIO in the chain.
242
244
 
243
- // BIO_push adds |appended_bio| to the end of the chain with |bio| at the head.
244
- // It returns |bio|. Note that |appended_bio| may be the head of a chain itself
245
+ // BIO_push adds `appended_bio` to the end of the chain with `bio` at the head.
246
+ // It returns `bio`. Note that `appended_bio` may be the head of a chain itself
245
247
  // and thus this function can be used to join two chains.
246
248
  //
247
- // BIO_push takes ownership of the caller's reference to |appended_bio|.
249
+ // BIO_push takes ownership of the caller's reference to `appended_bio`.
248
250
  OPENSSL_EXPORT BIO *BIO_push(BIO *bio, BIO *appended_bio);
249
251
 
250
- // BIO_pop removes |bio| from the head of a chain and returns the next BIO in
252
+ // BIO_pop removes `bio` from the head of a chain and returns the next BIO in
251
253
  // the chain, or NULL if there is no next BIO.
252
254
  //
253
- // The caller takes ownership of the chain's reference to |bio|.
255
+ // The caller takes ownership of the chain's reference to `bio`.
254
256
  OPENSSL_EXPORT BIO *BIO_pop(BIO *bio);
255
257
 
256
- // BIO_next returns the next BIO in the chain after |bio|, or NULL if there is
258
+ // BIO_next returns the next BIO in the chain after `bio`, or NULL if there is
257
259
  // no such BIO.
258
260
  OPENSSL_EXPORT BIO *BIO_next(BIO *bio);
259
261
 
260
- // BIO_free_all calls |BIO_free|.
261
- //
262
- // TODO(fork): update callers and remove.
263
- OPENSSL_EXPORT void BIO_free_all(BIO *bio);
264
-
265
262
  // BIO_find_type walks a chain of BIOs and returns the first that matches
266
- // |type|, which is one of the |BIO_TYPE_*| values.
263
+ // `type`, which is one of the `BIO_TYPE_*` values.
264
+ //
265
+ // If `type & 0xff` is non-zero, i.e. `type` is a complete type and contains an
266
+ // "index" component, the function looks for an exact match. If `type & 0xff` is
267
+ // zero, i.e. `type` just specifies `BIO_TYPE_DESCRIPTOR`, `BIO_TYPE_FILTER`,
268
+ // and `BIO_TYPE_SOURCE_SINK` bits, the function looks for any BIO whose type
269
+ // contains at least one of those bits.
267
270
  OPENSSL_EXPORT BIO *BIO_find_type(BIO *bio, int type);
268
271
 
269
- // BIO_copy_next_retry sets the retry flags and |retry_reason| of |bio| from
272
+ // BIO_copy_next_retry sets the retry flags and `retry_reason` of `bio` from
270
273
  // the next BIO in the chain.
271
274
  OPENSSL_EXPORT void BIO_copy_next_retry(BIO *bio);
272
275
 
273
276
 
274
277
  // Printf functions.
275
278
 
276
- // BIO_printf behaves like |printf| but outputs to |bio| rather than a |FILE|.
279
+ // BIO_printf behaves like `printf` but outputs to `bio` rather than a `FILE`.
277
280
  // It returns the number of bytes written or a negative number on error.
278
281
  OPENSSL_EXPORT int BIO_printf(BIO *bio, const char *format, ...)
279
282
  OPENSSL_PRINTF_FORMAT_FUNC(2, 3);
@@ -281,98 +284,98 @@ OPENSSL_EXPORT int BIO_printf(BIO *bio, const char *format, ...)
281
284
 
282
285
  // Utility functions.
283
286
 
284
- // BIO_indent prints min(|indent|, |max_indent|) spaces. It returns one on
287
+ // BIO_indent prints min(`indent`, `max_indent`) spaces. It returns one on
285
288
  // success and zero otherwise.
286
289
  OPENSSL_EXPORT int BIO_indent(BIO *bio, unsigned indent, unsigned max_indent);
287
290
 
288
- // BIO_hexdump writes a hex dump of |data| to |bio|. Each line will be indented
289
- // by |indent| spaces. It returns one on success and zero otherwise.
291
+ // BIO_hexdump writes a hex dump of `data` to `bio`. Each line will be indented
292
+ // by `indent` spaces. It returns one on success and zero otherwise.
290
293
  OPENSSL_EXPORT int BIO_hexdump(BIO *bio, const uint8_t *data, size_t len,
291
294
  unsigned indent);
292
295
 
293
- // ERR_print_errors prints the current contents of the error stack to |bio|
296
+ // ERR_print_errors prints the current contents of the error stack to `bio`
294
297
  // using human readable strings where possible.
295
298
  OPENSSL_EXPORT void ERR_print_errors(BIO *bio);
296
299
 
297
- // BIO_read_asn1 reads a single ASN.1 object from |bio|. If successful it sets
298
- // |*out| to be an allocated buffer (that should be freed with |OPENSSL_free|),
299
- // |*out_size| to the length, in bytes, of that buffer and returns one.
300
+ // BIO_read_asn1 reads a single ASN.1 object from `bio`. If successful it sets
301
+ // `*out` to be an allocated buffer (that should be freed with `OPENSSL_free`),
302
+ // `*out_size` to the length, in bytes, of that buffer and returns one.
300
303
  // Otherwise it returns zero.
301
304
  //
302
- // If the length of the object is greater than |max_len| or 2^32 then the
305
+ // If the length of the object is greater than `max_len` or 2^32 then the
303
306
  // function will fail. Long-form tags are not supported. If the length of the
304
- // object is indefinite the full contents of |bio| are read, unless it would be
305
- // greater than |max_len|, in which case the function fails.
307
+ // object is indefinite the full contents of `bio` are read, unless it would be
308
+ // greater than `max_len`, in which case the function fails.
306
309
  //
307
310
  // If the function fails then some unknown amount of data may have been read
308
- // from |bio|.
311
+ // from `bio`.
309
312
  OPENSSL_EXPORT int BIO_read_asn1(BIO *bio, uint8_t **out, size_t *out_len,
310
313
  size_t max_len);
311
314
 
312
315
 
313
316
  // Memory BIOs.
314
317
  //
315
- // Memory BIOs can be used as a read-only source (with |BIO_new_mem_buf|) or a
316
- // writable sink (with |BIO_new|, |BIO_s_mem| and |BIO_mem_contents|). Data
318
+ // Memory BIOs can be used as a read-only source (with `BIO_new_mem_buf`) or a
319
+ // writable sink (with `BIO_new`, `BIO_s_mem` and `BIO_mem_contents`). Data
317
320
  // written to a writable, memory BIO can be recalled by reading from it.
318
321
  //
319
- // Calling |BIO_reset| on a read-only BIO resets it to the original contents.
322
+ // Calling `BIO_reset` on a read-only BIO resets it to the original contents.
320
323
  // On a writable BIO, it clears any data.
321
324
  //
322
- // If the close flag is set to |BIO_NOCLOSE| (not the default) then the
323
- // underlying |BUF_MEM| will not be freed when the |BIO| is freed.
325
+ // If the close flag is set to `BIO_NOCLOSE` (not the default) then the
326
+ // underlying `BUF_MEM` will not be freed when the `BIO` is freed.
324
327
  //
325
- // Memory BIOs support |BIO_gets| and |BIO_puts|.
328
+ // Memory BIOs support `BIO_gets` and `BIO_puts`.
326
329
  //
327
- // |BIO_ctrl_pending| returns the number of bytes currently stored.
330
+ // `BIO_ctrl_pending` returns the number of bytes currently stored.
328
331
 
329
- // BIO_NOCLOSE and |BIO_CLOSE| can be used as symbolic arguments when a "close
332
+ // BIO_NOCLOSE and `BIO_CLOSE` can be used as symbolic arguments when a "close
330
333
  // flag" is passed to a BIO function.
331
334
  #define BIO_NOCLOSE 0
332
335
  #define BIO_CLOSE 1
333
336
 
334
- // BIO_s_mem returns a |BIO_METHOD| that uses a in-memory buffer.
337
+ // BIO_s_mem returns a `BIO_METHOD` that uses a in-memory buffer.
335
338
  OPENSSL_EXPORT const BIO_METHOD *BIO_s_mem(void);
336
339
 
337
- // BIO_new_mem_buf creates read-only BIO that reads from |len| bytes at |buf|.
340
+ // BIO_new_mem_buf creates read-only BIO that reads from `len` bytes at `buf`.
338
341
  // It returns the BIO or NULL on error. This function does not copy or take
339
- // ownership of |buf|. The caller must ensure the memory pointed to by |buf|
340
- // outlives the |BIO|.
342
+ // ownership of `buf`. The caller must ensure the memory pointed to by `buf`
343
+ // outlives the `BIO`.
341
344
  //
342
- // If |len| is negative, then |buf| is treated as a NUL-terminated string, but
345
+ // If `len` is negative, then `buf` is treated as a NUL-terminated string, but
343
346
  // don't depend on this in new code.
344
347
  OPENSSL_EXPORT BIO *BIO_new_mem_buf(const void *buf, ossl_ssize_t len);
345
348
 
346
- // BIO_mem_contents sets |*out_contents| to point to the current contents of
347
- // |bio| and |*out_len| to contain the length of that data. It returns one on
349
+ // BIO_mem_contents sets `*out_contents` to point to the current contents of
350
+ // `bio` and `*out_len` to contain the length of that data. It returns one on
348
351
  // success and zero otherwise.
349
352
  OPENSSL_EXPORT int BIO_mem_contents(const BIO *bio,
350
353
  const uint8_t **out_contents,
351
354
  size_t *out_len);
352
355
 
353
- // BIO_get_mem_data sets |*contents| to point to the current contents of |bio|
356
+ // BIO_get_mem_data sets `*contents` to point to the current contents of `bio`
354
357
  // and returns the length of the data.
355
358
  //
356
- // WARNING: don't use this, use |BIO_mem_contents|. A return value of zero from
359
+ // WARNING: don't use this, use `BIO_mem_contents`. A return value of zero from
357
360
  // this function can mean either that it failed or that the memory buffer is
358
361
  // empty.
359
362
  OPENSSL_EXPORT long BIO_get_mem_data(BIO *bio, char **contents);
360
363
 
361
- // BIO_get_mem_ptr sets |*out| to a BUF_MEM containing the current contents of
362
- // |bio|. It returns one on success or zero on error.
364
+ // BIO_get_mem_ptr sets `*out` to a BUF_MEM containing the current contents of
365
+ // `bio`. It returns one on success or zero on error.
363
366
  OPENSSL_EXPORT int BIO_get_mem_ptr(BIO *bio, BUF_MEM **out);
364
367
 
365
- // BIO_set_mem_buf sets |b| as the contents of |bio|. If |take_ownership| is
366
- // non-zero, then |b| will be freed when |bio| is closed. Returns one on
368
+ // BIO_set_mem_buf sets `b` as the contents of `bio`. If `take_ownership` is
369
+ // non-zero, then `b` will be freed when `bio` is closed. Returns one on
367
370
  // success or zero otherwise.
368
371
  OPENSSL_EXPORT int BIO_set_mem_buf(BIO *bio, BUF_MEM *b, int take_ownership);
369
372
 
370
373
  // BIO_set_mem_eof_return sets the value that will be returned from reading
371
- // |bio| when empty. If |eof_value| is zero then an empty memory BIO will
372
- // return EOF (that is it will return zero and |BIO_should_retry| will be
373
- // false). If |eof_value| is non zero then it will return |eof_value| when it
374
- // is empty and it will set the read retry flag (that is |BIO_read_retry| is
375
- // true). To avoid ambiguity with a normal positive return value, |eof_value|
374
+ // `bio` when empty. If `eof_value` is zero then an empty memory BIO will
375
+ // return EOF (that is it will return zero and `BIO_should_retry` will be
376
+ // false). If `eof_value` is non zero then it will return `eof_value` when it
377
+ // is empty and it will set the read retry flag (that is `BIO_read_retry` is
378
+ // true). To avoid ambiguity with a normal positive return value, `eof_value`
376
379
  // should be set to a negative value, typically -1.
377
380
  //
378
381
  // For a read-only BIO, the default is zero (EOF). For a writable BIO, the
@@ -382,171 +385,171 @@ OPENSSL_EXPORT int BIO_set_mem_eof_return(BIO *bio, int eof_value);
382
385
 
383
386
  // File descriptor BIOs.
384
387
  //
385
- // File descriptor BIOs are wrappers around the system's |read| and |write|
386
- // functions. If the close flag is set then then |close| is called on the
388
+ // File descriptor BIOs are wrappers around the system's `read` and `write`
389
+ // functions. If the close flag is set then then `close` is called on the
387
390
  // underlying file descriptor when the BIO is freed.
388
391
  //
389
- // |BIO_reset| attempts to seek the file pointer to the start of file using
390
- // |lseek|.
392
+ // `BIO_reset` attempts to seek the file pointer to the start of file using
393
+ // `lseek`.
391
394
 
392
395
  #if !defined(OPENSSL_NO_POSIX_IO)
393
- // BIO_s_fd returns a |BIO_METHOD| for file descriptor fds.
396
+ // BIO_s_fd returns a `BIO_METHOD` for file descriptor fds.
394
397
  OPENSSL_EXPORT const BIO_METHOD *BIO_s_fd(void);
395
398
 
396
- // BIO_new_fd creates a new file descriptor BIO wrapping |fd|. If |close_flag|
397
- // is non-zero, then |fd| will be closed when the BIO is.
399
+ // BIO_new_fd creates a new file descriptor BIO wrapping `fd`. If `close_flag`
400
+ // is non-zero, then `fd` will be closed when the BIO is.
398
401
  OPENSSL_EXPORT BIO *BIO_new_fd(int fd, int close_flag);
399
402
  #endif
400
403
 
401
- // BIO_set_fd sets the file descriptor of |bio| to |fd|. If |close_flag| is
402
- // non-zero then |fd| will be closed when |bio| is. It returns one on success
404
+ // BIO_set_fd sets the file descriptor of `bio` to `fd`. If `close_flag` is
405
+ // non-zero then `fd` will be closed when `bio` is. It returns one on success
403
406
  // or zero on error.
404
407
  //
405
- // This function may also be used with socket BIOs (see |BIO_s_socket| and
406
- // |BIO_new_socket|).
408
+ // This function may also be used with socket BIOs (see `BIO_s_socket` and
409
+ // `BIO_new_socket`).
407
410
  OPENSSL_EXPORT int BIO_set_fd(BIO *bio, int fd, int close_flag);
408
411
 
409
- // BIO_get_fd returns the file descriptor currently in use by |bio| or -1 if
410
- // |bio| does not wrap a file descriptor. If there is a file descriptor and
411
- // |out_fd| is not NULL, it also sets |*out_fd| to the file descriptor.
412
+ // BIO_get_fd returns the file descriptor currently in use by `bio` or -1 if
413
+ // `bio` does not wrap a file descriptor. If there is a file descriptor and
414
+ // `out_fd` is not NULL, it also sets `*out_fd` to the file descriptor.
412
415
  //
413
- // This function may also be used with socket BIOs (see |BIO_s_socket| and
414
- // |BIO_new_socket|).
416
+ // This function may also be used with socket BIOs (see `BIO_s_socket` and
417
+ // `BIO_new_socket`).
415
418
  OPENSSL_EXPORT int BIO_get_fd(BIO *bio, int *out_fd);
416
419
 
417
420
 
418
421
  // File BIOs.
419
422
  //
420
- // File BIOs are wrappers around a C |FILE| object.
423
+ // File BIOs are wrappers around a C `FILE` object.
421
424
  //
422
- // |BIO_flush| on a file BIO calls |fflush| on the wrapped stream.
425
+ // `BIO_flush` on a file BIO calls `fflush` on the wrapped stream.
423
426
  //
424
- // |BIO_reset| attempts to seek the file pointer to the start of file using
425
- // |fseek|.
427
+ // `BIO_reset` attempts to seek the file pointer to the start of file using
428
+ // `fseek`.
426
429
  //
427
- // Setting the close flag causes |fclose| to be called on the stream when the
430
+ // Setting the close flag causes `fclose` to be called on the stream when the
428
431
  // BIO is freed.
429
432
 
430
- // BIO_s_file returns a BIO_METHOD that wraps a |FILE|.
433
+ // BIO_s_file returns a BIO_METHOD that wraps a `FILE`.
431
434
  OPENSSL_EXPORT const BIO_METHOD *BIO_s_file(void);
432
435
 
433
- // BIO_new_file creates a file BIO by opening |filename| with the given mode.
434
- // See the |fopen| manual page for details of the mode argument. On Windows,
435
- // files may be opened in either binary or text mode so, as in |fopen|, callers
436
- // must specify the desired option in |mode|.
436
+ // BIO_new_file creates a file BIO by opening `filename` with the given mode.
437
+ // See the `fopen` manual page for details of the mode argument. On Windows,
438
+ // files may be opened in either binary or text mode so, as in `fopen`, callers
439
+ // must specify the desired option in `mode`.
437
440
  OPENSSL_EXPORT BIO *BIO_new_file(const char *filename, const char *mode);
438
441
 
439
- // BIO_FP_TEXT indicates the |FILE| should be switched to text mode on Windows.
442
+ // BIO_FP_TEXT indicates the `FILE` should be switched to text mode on Windows.
440
443
  // It has no effect on non-Windows platforms.
441
444
  #define BIO_FP_TEXT 0x10
442
445
 
443
- // BIO_new_fp creates a new file BIO that wraps |file|. If |flags| contains
444
- // |BIO_CLOSE|, then |fclose| will be called on |file| when the BIO is closed.
446
+ // BIO_new_fp creates a new file BIO that wraps `file`. If `flags` contains
447
+ // `BIO_CLOSE`, then `fclose` will be called on `file` when the BIO is closed.
445
448
  //
446
- // On Windows, if |flags| contains |BIO_FP_TEXT|, this function will
447
- // additionally switch |file| to text mode. This is not recommended, but may be
448
- // required for OpenSSL compatibility. If |file| was not already in text mode,
449
- // mode changes can cause unflushed data in |file| to be written in unexpected
450
- // ways. See |_setmode| in Windows documentation for details.
449
+ // On Windows, if `flags` contains `BIO_FP_TEXT`, this function will
450
+ // additionally switch `file` to text mode. This is not recommended, but may be
451
+ // required for OpenSSL compatibility. If `file` was not already in text mode,
452
+ // mode changes can cause unflushed data in `file` to be written in unexpected
453
+ // ways. See `_setmode` in Windows documentation for details.
451
454
  //
452
- // Unlike OpenSSL, if |flags| does not contain |BIO_FP_TEXT|, the translation
453
- // mode of |file| is left as-is. In OpenSSL, |file| will be set to binary, with
455
+ // Unlike OpenSSL, if `flags` does not contain `BIO_FP_TEXT`, the translation
456
+ // mode of `file` is left as-is. In OpenSSL, `file` will be set to binary, with
454
457
  // the same pitfalls as above. BoringSSL does not do this so that wrapping a
455
- // |FILE| in a |BIO| will not inadvertently change its state.
458
+ // `FILE` in a `BIO` will not inadvertently change its state.
456
459
  //
457
460
  // To avoid these pitfalls, callers should set the desired translation mode when
458
461
  // opening the file. If targeting just BoringSSL, this is sufficient. If
459
- // targeting both OpenSSL and BoringSSL, callers should set |BIO_FP_TEXT| to
462
+ // targeting both OpenSSL and BoringSSL, callers should set `BIO_FP_TEXT` to
460
463
  // match the desired state of the file.
461
464
  OPENSSL_EXPORT BIO *BIO_new_fp(FILE *file, int flags);
462
465
 
463
- // BIO_get_fp sets |*out_file| to the current |FILE| for |bio|. It returns one
466
+ // BIO_get_fp sets `*out_file` to the current `FILE` for `bio`. It returns one
464
467
  // on success and zero otherwise.
465
468
  OPENSSL_EXPORT int BIO_get_fp(BIO *bio, FILE **out_file);
466
469
 
467
- // BIO_set_fp sets the |FILE| for |bio|. If |flags| contains |BIO_CLOSE| then
468
- // |fclose| will be called on |file| when |bio| is closed. It returns one on
470
+ // BIO_set_fp sets the `FILE` for `bio`. If `flags` contains `BIO_CLOSE` then
471
+ // `fclose` will be called on `file` when `bio` is closed. It returns one on
469
472
  // success and zero otherwise.
470
473
  //
471
- // On Windows, if |flags| contains |BIO_FP_TEXT|, this function will
472
- // additionally switch |file| to text mode. This is not recommended, but may be
473
- // required for OpenSSL compatibility. If |file| was not already in text mode,
474
- // mode changes can cause unflushed data in |file| to be written in unexpected
475
- // ways. See |_setmode| in Windows documentation for details.
474
+ // On Windows, if `flags` contains `BIO_FP_TEXT`, this function will
475
+ // additionally switch `file` to text mode. This is not recommended, but may be
476
+ // required for OpenSSL compatibility. If `file` was not already in text mode,
477
+ // mode changes can cause unflushed data in `file` to be written in unexpected
478
+ // ways. See `_setmode` in Windows documentation for details.
476
479
  //
477
- // Unlike OpenSSL, if |flags| does not contain |BIO_FP_TEXT|, the translation
478
- // mode of |file| is left as-is. In OpenSSL, |file| will be set to binary, with
480
+ // Unlike OpenSSL, if `flags` does not contain `BIO_FP_TEXT`, the translation
481
+ // mode of `file` is left as-is. In OpenSSL, `file` will be set to binary, with
479
482
  // the same pitfalls as above. BoringSSL does not do this so that wrapping a
480
- // |FILE| in a |BIO| will not inadvertently change its state.
483
+ // `FILE` in a `BIO` will not inadvertently change its state.
481
484
  //
482
485
  // To avoid these pitfalls, callers should set the desired translation mode when
483
486
  // opening the file. If targeting just BoringSSL, this is sufficient. If
484
- // targeting both OpenSSL and BoringSSL, callers should set |BIO_FP_TEXT| to
487
+ // targeting both OpenSSL and BoringSSL, callers should set `BIO_FP_TEXT` to
485
488
  // match the desired state of the file.
486
489
  OPENSSL_EXPORT int BIO_set_fp(BIO *bio, FILE *file, int flags);
487
490
 
488
- // BIO_read_filename opens |filename| for reading and sets the result as the
489
- // |FILE| for |bio|. It returns one on success and zero otherwise. The |FILE|
490
- // will be closed when |bio| is freed. On Windows, the file is opened in binary
491
+ // BIO_read_filename opens `filename` for reading and sets the result as the
492
+ // `FILE` for `bio`. It returns one on success and zero otherwise. The `FILE`
493
+ // will be closed when `bio` is freed. On Windows, the file is opened in binary
491
494
  // mode.
492
495
  OPENSSL_EXPORT int BIO_read_filename(BIO *bio, const char *filename);
493
496
 
494
- // BIO_write_filename opens |filename| for writing and sets the result as the
495
- // |FILE| for |bio|. It returns one on success and zero otherwise. The |FILE|
496
- // will be closed when |bio| is freed. On Windows, the file is opened in binary
497
+ // BIO_write_filename opens `filename` for writing and sets the result as the
498
+ // `FILE` for `bio`. It returns one on success and zero otherwise. The `FILE`
499
+ // will be closed when `bio` is freed. On Windows, the file is opened in binary
497
500
  // mode.
498
501
  OPENSSL_EXPORT int BIO_write_filename(BIO *bio, const char *filename);
499
502
 
500
- // BIO_append_filename opens |filename| for appending and sets the result as
501
- // the |FILE| for |bio|. It returns one on success and zero otherwise. The
502
- // |FILE| will be closed when |bio| is freed. On Windows, the file is opened in
503
+ // BIO_append_filename opens `filename` for appending and sets the result as
504
+ // the `FILE` for `bio`. It returns one on success and zero otherwise. The
505
+ // `FILE` will be closed when `bio` is freed. On Windows, the file is opened in
503
506
  // binary mode.
504
507
  OPENSSL_EXPORT int BIO_append_filename(BIO *bio, const char *filename);
505
508
 
506
- // BIO_rw_filename opens |filename| for reading and writing and sets the result
507
- // as the |FILE| for |bio|. It returns one on success and zero otherwise. The
508
- // |FILE| will be closed when |bio| is freed. On Windows, the file is opened in
509
+ // BIO_rw_filename opens `filename` for reading and writing and sets the result
510
+ // as the `FILE` for `bio`. It returns one on success and zero otherwise. The
511
+ // `FILE` will be closed when `bio` is freed. On Windows, the file is opened in
509
512
  // binary mode.
510
513
  OPENSSL_EXPORT int BIO_rw_filename(BIO *bio, const char *filename);
511
514
 
512
- // BIO_tell returns the file offset of |bio|, or a negative number on error or
513
- // if |bio| does not support the operation.
515
+ // BIO_tell returns the file offset of `bio`, or a negative number on error or
516
+ // if `bio` does not support the operation.
514
517
  //
515
- // TODO(https://crbug.com/boringssl/465): On platforms where |long| is 32-bit,
516
- // this function cannot report 64-bit offsets.
518
+ // TODO(crbug.com/42290329): On platforms where `long` is 32-bit, this function
519
+ // cannot report 64-bit offsets.
517
520
  OPENSSL_EXPORT long BIO_tell(BIO *bio);
518
521
 
519
- // BIO_seek sets the file offset of |bio| to |offset|. It returns a non-negative
520
- // number on success and a negative number on error. If |bio| is a file
521
- // descriptor |BIO|, it returns the resulting file offset on success. If |bio|
522
- // is a file |BIO|, it returns zero on success.
522
+ // BIO_seek sets the file offset of `bio` to `offset`. It returns a non-negative
523
+ // number on success and a negative number on error. If `bio` is a file
524
+ // descriptor `BIO`, it returns the resulting file offset on success. If `bio`
525
+ // is a file `BIO`, it returns zero on success.
523
526
  //
524
527
  // WARNING: This function's return value conventions differs from most functions
525
528
  // in this library.
526
529
  //
527
- // TODO(https://crbug.com/boringssl/465): On platforms where |long| is 32-bit,
528
- // this function cannot handle 64-bit offsets.
530
+ // TODO(crbug.com/42290329): On platforms where `long` is 32-bit, this function
531
+ // cannot handle 64-bit offsets.
529
532
  OPENSSL_EXPORT long BIO_seek(BIO *bio, long offset);
530
533
 
531
534
 
532
535
  // Socket BIOs.
533
536
  //
534
537
  // Socket BIOs behave like file descriptor BIOs but, on Windows systems, wrap
535
- // the system's |recv| and |send| functions instead of |read| and |write|. On
538
+ // the system's `recv` and `send` functions instead of `read` and `write`. On
536
539
  // Windows, file descriptors are provided by C runtime and are not
537
540
  // interchangeable with sockets.
538
541
  //
539
- // Socket BIOs may be used with |BIO_set_fd| and |BIO_get_fd|.
542
+ // Socket BIOs may be used with `BIO_set_fd` and `BIO_get_fd`.
540
543
  //
541
- // TODO(davidben): Add separate APIs and fix the internals to use |SOCKET|s
544
+ // TODO(davidben): Add separate APIs and fix the internals to use `SOCKET`s
542
545
  // around rather than rely on int casts.
543
546
 
544
547
  #if !defined(OPENSSL_NO_SOCK)
545
548
  OPENSSL_EXPORT const BIO_METHOD *BIO_s_socket(void);
546
549
 
547
550
  // BIO_new_socket allocates and initialises a fresh BIO which will read and
548
- // write to the socket |fd|. If |close_flag| is |BIO_CLOSE| then closing the
549
- // BIO will close |fd|. It returns the fresh |BIO| or NULL on error.
551
+ // write to the socket `fd`. If `close_flag` is `BIO_CLOSE` then closing the
552
+ // BIO will close `fd`. It returns the fresh `BIO` or NULL on error.
550
553
  OPENSSL_EXPORT BIO *BIO_new_socket(int fd, int close_flag);
551
554
  #endif // !OPENSSL_NO_SOCK
552
555
 
@@ -560,38 +563,38 @@ OPENSSL_EXPORT BIO *BIO_new_socket(int fd, int close_flag);
560
563
  OPENSSL_EXPORT const BIO_METHOD *BIO_s_connect(void);
561
564
 
562
565
  // BIO_new_connect returns a BIO that connects to the given hostname and port.
563
- // The |host_and_optional_port| argument should be of the form
566
+ // The `host_and_optional_port` argument should be of the form
564
567
  // "www.example.com" or "www.example.com:443". If the port is omitted, it must
565
- // be provided with |BIO_set_conn_port|.
568
+ // be provided with `BIO_set_conn_port`.
566
569
  //
567
570
  // It returns the new BIO on success, or NULL on error.
568
571
  OPENSSL_EXPORT BIO *BIO_new_connect(const char *host_and_optional_port);
569
572
 
570
- // BIO_set_conn_hostname sets |host_and_optional_port| as the hostname and
571
- // optional port that |bio| will connect to. If the port is omitted, it must be
572
- // provided with |BIO_set_conn_port|.
573
+ // BIO_set_conn_hostname sets `host_and_optional_port` as the hostname and
574
+ // optional port that `bio` will connect to. If the port is omitted, it must be
575
+ // provided with `BIO_set_conn_port`.
573
576
  //
574
577
  // It returns one on success and zero otherwise.
575
578
  OPENSSL_EXPORT int BIO_set_conn_hostname(BIO *bio,
576
579
  const char *host_and_optional_port);
577
580
 
578
- // BIO_set_conn_port sets |port_str| as the port or service name that |bio|
581
+ // BIO_set_conn_port sets `port_str` as the port or service name that `bio`
579
582
  // will connect to. It returns one on success and zero otherwise.
580
583
  OPENSSL_EXPORT int BIO_set_conn_port(BIO *bio, const char *port_str);
581
584
 
582
- // BIO_set_conn_int_port sets |*port| as the port that |bio| will connect to.
585
+ // BIO_set_conn_int_port sets `*port` as the port that `bio` will connect to.
583
586
  // It returns one on success and zero otherwise.
584
587
  OPENSSL_EXPORT int BIO_set_conn_int_port(BIO *bio, const int *port);
585
588
 
586
- // BIO_set_nbio sets whether |bio| will use non-blocking I/O operations. It
589
+ // BIO_set_nbio sets whether `bio` will use non-blocking I/O operations. It
587
590
  // returns one on success and zero otherwise. This only works for connect BIOs
588
- // and must be called before |bio| is connected to take effect.
591
+ // and must be called before `bio` is connected to take effect.
589
592
  //
590
593
  // For socket and fd BIOs, callers must configure blocking vs. non-blocking I/O
591
594
  // using the underlying platform APIs.
592
595
  OPENSSL_EXPORT int BIO_set_nbio(BIO *bio, int on);
593
596
 
594
- // BIO_do_connect connects |bio| if it has not been connected yet. It returns
597
+ // BIO_do_connect connects `bio` if it has not been connected yet. It returns
595
598
  // one on success and <= 0 otherwise.
596
599
  OPENSSL_EXPORT int BIO_do_connect(BIO *bio);
597
600
  #endif // !OPENSSL_NO_SOCK
@@ -610,7 +613,7 @@ OPENSSL_EXPORT int BIO_do_connect(BIO *bio);
610
613
  the previous write operation. */
611
614
 
612
615
  // BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT is unsupported as it is unused by consumers
613
- // and depends on |timeval|, which is not 2038-clean on all platforms.
616
+ // and depends on `timeval`, which is not 2038-clean on all platforms.
614
617
 
615
618
  #define BIO_CTRL_DGRAM_GET_PEER 46
616
619
 
@@ -622,143 +625,187 @@ OPENSSL_EXPORT int BIO_do_connect(BIO *bio);
622
625
  // BIO pairs provide a "loopback" like system: a pair of BIOs where data
623
626
  // written to one can be read from the other and vice versa.
624
627
 
625
- // BIO_new_bio_pair sets |*out1| and |*out2| to two freshly created BIOs where
628
+ // BIO_new_bio_pair sets `*out1` and `*out2` to two freshly created BIOs where
626
629
  // data written to one can be read from the other and vice versa. The
627
- // |writebuf1| argument gives the size of the buffer used in |*out1| and
628
- // |writebuf2| for |*out2|. It returns one on success and zero on error.
630
+ // `writebuf1` argument gives the size of the buffer used in `*out1` and
631
+ // `writebuf2` for `*out2`. It returns one on success and zero on error.
629
632
  OPENSSL_EXPORT int BIO_new_bio_pair(BIO **out1, size_t writebuf1, BIO **out2,
630
633
  size_t writebuf2);
631
634
 
632
635
  // BIO_ctrl_get_read_request returns the number of bytes that the other side of
633
- // |bio| tried (unsuccessfully) to read.
636
+ // `bio` tried (unsuccessfully) to read.
634
637
  OPENSSL_EXPORT size_t BIO_ctrl_get_read_request(BIO *bio);
635
638
 
636
- // BIO_ctrl_get_write_guarantee returns the number of bytes that |bio| (which
637
- // must have been returned by |BIO_new_bio_pair|) will accept on the next
638
- // |BIO_write| call.
639
+ // BIO_ctrl_get_write_guarantee returns the number of bytes that `bio` (which
640
+ // must have been returned by `BIO_new_bio_pair`) will accept on the next
641
+ // `BIO_write` call.
639
642
  OPENSSL_EXPORT size_t BIO_ctrl_get_write_guarantee(BIO *bio);
640
643
 
641
- // BIO_shutdown_wr marks |bio| as closed, from the point of view of the other
642
- // side of the pair. Future |BIO_write| calls on |bio| will fail. It returns
644
+ // BIO_shutdown_wr marks `bio` as closed, from the point of view of the other
645
+ // side of the pair. Future `BIO_write` calls on `bio` will fail. It returns
643
646
  // one on success and zero otherwise.
644
647
  OPENSSL_EXPORT int BIO_shutdown_wr(BIO *bio);
645
648
 
646
649
 
647
650
  // Custom BIOs.
648
651
  //
649
- // Consumers can create custom |BIO|s by filling in a |BIO_METHOD| and using
652
+ // Consumers can create custom `BIO`s by filling in a `BIO_METHOD` and using
650
653
  // low-level control functions to set state.
651
654
 
652
- // BIO_get_new_index returns a new "type" value for a custom |BIO|.
655
+ // BIO_get_new_index returns a new "type" value for a custom `BIO`, or -1 on
656
+ // error.
653
657
  OPENSSL_EXPORT int BIO_get_new_index(void);
654
658
 
655
- // BIO_meth_new returns a newly-allocated |BIO_METHOD| or NULL on allocation
656
- // error. The |type| specifies the type that will be returned by
657
- // |BIO_method_type|. If this is unnecessary, this value may be zero. The |name|
659
+ // BIO_meth_new returns a newly-allocated `BIO_METHOD` or NULL on allocation
660
+ // error. The `type` specifies the type that will be returned by
661
+ // `BIO_method_type`. If this is unnecessary, this value may be zero. The `name`
658
662
  // parameter is vestigial and may be NULL.
659
663
  //
660
- // Use the |BIO_meth_set_*| functions below to initialize the |BIO_METHOD|. The
661
- // function implementations may use |BIO_set_data| and |BIO_get_data| to add
662
- // method-specific state to associated |BIO|s. Additionally, |BIO_set_init| must
663
- // be called after an associated |BIO| is fully initialized. State set via
664
- // |BIO_set_data| may be released by configuring a destructor with
665
- // |BIO_meth_set_destroy|.
664
+ // Use the `BIO_meth_set_*` functions below to initialize the `BIO_METHOD`. The
665
+ // function implementations may use `BIO_set_data` and `BIO_get_data` to add
666
+ // method-specific state to associated `BIO`s. Additionally, `BIO_set_init` must
667
+ // be called after an associated `BIO` is fully initialized. State set via
668
+ // `BIO_set_data` may be released by configuring a destructor with
669
+ // `BIO_meth_set_destroy`.
666
670
  OPENSSL_EXPORT BIO_METHOD *BIO_meth_new(int type, const char *name);
667
671
 
668
- // BIO_meth_free releases memory associated with |method|.
672
+ // BIO_meth_free releases memory associated with `method`.
669
673
  OPENSSL_EXPORT void BIO_meth_free(BIO_METHOD *method);
670
674
 
671
- // BIO_meth_set_create sets a function to be called on |BIO_new| for |method|
675
+ // BIO_meth_set_create sets a function to be called on `BIO_new` for `method`
672
676
  // and returns one. The function should return one on success and zero on
673
677
  // error.
674
678
  OPENSSL_EXPORT int BIO_meth_set_create(BIO_METHOD *method,
675
679
  int (*create_func)(BIO *));
676
680
 
677
- // BIO_meth_set_destroy sets a function to release data associated with a |BIO|
681
+ // BIO_meth_set_destroy sets a function to release data associated with a `BIO`
678
682
  // and returns one. The function's return value is ignored.
683
+ //
684
+ // As the `BIO` is about to be destroyed, it is not necessary for `destroy_func`
685
+ // to clear the BIO's state with `BIO_set_data` or `BIO_set_init`. There is no
686
+ // harm in clearing them, but the `BIO` will not be passed to `BIO` operations,
687
+ // unless `destroy_func` itself does so.
679
688
  OPENSSL_EXPORT int BIO_meth_set_destroy(BIO_METHOD *method,
680
689
  int (*destroy_func)(BIO *));
681
690
 
682
- // BIO_meth_set_write sets the implementation of |BIO_write| for |method| and
683
- // returns one. |BIO_METHOD|s which implement |BIO_write| should also implement
684
- // |BIO_CTRL_FLUSH|. (See |BIO_meth_set_ctrl|.)
691
+ // BIO_meth_set_write_ex sets the implementation of `BIO_write_ex` for `method`
692
+ // and returns one. `BIO_METHOD`s which implement `BIO_write_ex` should also
693
+ // implement `BIO_CTRL_FLUSH`. (See `BIO_meth_set_ctrl`.)
694
+ //
695
+ // `write_ex_func` can assume `BIO_get_init` returns one, the input size is
696
+ // greater than zero, and `out_written` is non-NULL. Those cases are handled
697
+ // before calling into the `BIO_METHOD`.
698
+ //
699
+ // If configured, `write_ex_func` will also be used to implement `BIO_write`,
700
+ // with the `BIO` framework converting the conventions. `BIO_meth_set_write_ex`
701
+ // and `BIO_meth_set_write` should not be configured on the same `BIO_METHOD`.
702
+ // Prefer `BIO_meth_set_write_ex` for a `size_t`-based API.
703
+ OPENSSL_EXPORT int BIO_meth_set_write_ex(
704
+ BIO_METHOD *method,
705
+ int (*write_ex_func)(BIO *, const char *, size_t, size_t *));
706
+
707
+ // BIO_meth_set_write sets the implementation of `BIO_write` for `method` and
708
+ // returns one. `BIO_METHOD`s which implement `BIO_write` should also implement
709
+ // `BIO_CTRL_FLUSH`. (See `BIO_meth_set_ctrl`.)
710
+ //
711
+ // `write_func` can assume `BIO_get_init` returns one and the input size is
712
+ // greater than zero. Those cases are handled before calling into the
713
+ // `BIO_METHOD`.
714
+ //
715
+ // If configured, `write_func` will also be used to implement `BIO_write_ex`,
716
+ // with the `BIO` framework converting the conventions. `BIO_meth_set_write_ex`
717
+ // and `BIO_meth_set_write` should not be configured on the same `BIO_METHOD`.
718
+ // Prefer `BIO_meth_set_write_ex` for a `size_t`-based API.
685
719
  OPENSSL_EXPORT int BIO_meth_set_write(BIO_METHOD *method,
686
720
  int (*write_func)(BIO *, const char *,
687
721
  int));
688
722
 
689
- // BIO_meth_set_read sets the implementation of |BIO_read| for |method| and
723
+ // BIO_meth_set_read sets the implementation of `BIO_read` for `method` and
690
724
  // returns one.
725
+ //
726
+ // `read_func` can assume `BIO_get_init` returns one and the output size is
727
+ // greater than zero. Those cases are handled before calling into the
728
+ // `BIO_METHOD`.
691
729
  OPENSSL_EXPORT int BIO_meth_set_read(BIO_METHOD *method,
692
730
  int (*read_func)(BIO *, char *, int));
693
731
 
694
- // BIO_meth_set_gets sets the implementation of |BIO_gets| for |method| and
732
+ // BIO_meth_set_gets sets the implementation of `BIO_gets` for `method` and
695
733
  // returns one.
734
+ //
735
+ // `gets_func` can assume `BIO_get_init` returns one and the output size is
736
+ // greater than zero. Those cases are handled before calling into the
737
+ // `BIO_METHOD`.
696
738
  OPENSSL_EXPORT int BIO_meth_set_gets(BIO_METHOD *method,
697
739
  int (*gets_func)(BIO *, char *, int));
698
740
 
699
- // BIO_meth_set_ctrl sets the implementation of |BIO_ctrl| for |method| and
741
+ // BIO_meth_set_ctrl sets the implementation of `BIO_ctrl` for `method` and
700
742
  // returns one.
701
743
  OPENSSL_EXPORT int BIO_meth_set_ctrl(BIO_METHOD *method,
702
744
  long (*ctrl_func)(BIO *, int, long,
703
745
  void *));
704
746
 
705
- // BIO_set_data sets custom data on |bio|. It may be retried with
706
- // |BIO_get_data|.
747
+ // BIO_meth_set_callback_ctrl sets the implementation of `BIO_callback_ctrl` for
748
+ // `method` and returns one.
749
+ OPENSSL_EXPORT int BIO_meth_set_callback_ctrl(
750
+ BIO_METHOD *method, long (*callback_ctrl_func)(BIO *, int, BIO_info_cb *));
751
+
752
+ // BIO_set_data sets custom data on `bio`. It may be retried with
753
+ // `BIO_get_data`.
707
754
  //
708
- // This function should only be called by the implementation of a custom |BIO|.
709
- // In particular, the data pointer of a built-in |BIO| is private to the
710
- // library. For other uses, see |BIO_set_ex_data| and |BIO_set_app_data|.
755
+ // This function should only be called by the implementation of a custom `BIO`.
756
+ // In particular, the data pointer of a built-in `BIO` is private to the
757
+ // library. For other uses, see `BIO_set_ex_data` and `BIO_set_app_data`.
711
758
  OPENSSL_EXPORT void BIO_set_data(BIO *bio, void *ptr);
712
759
 
713
- // BIO_get_data returns custom data on |bio| set by |BIO_get_data|.
760
+ // BIO_get_data returns custom data on `bio` set by `BIO_get_data`.
714
761
  //
715
- // This function should only be called by the implementation of a custom |BIO|.
716
- // In particular, the data pointer of a built-in |BIO| is private to the
717
- // library. For other uses, see |BIO_get_ex_data| and |BIO_get_app_data|.
762
+ // This function should only be called by the implementation of a custom `BIO`.
763
+ // In particular, the data pointer of a built-in `BIO` is private to the
764
+ // library. For other uses, see `BIO_get_ex_data` and `BIO_get_app_data`.
718
765
  OPENSSL_EXPORT void *BIO_get_data(BIO *bio);
719
766
 
720
- // BIO_set_init sets whether |bio| has been fully initialized. Until fully
721
- // initialized, |BIO_read| and |BIO_write| will fail.
767
+ // BIO_set_init sets whether `bio` has been fully initialized. Until fully
768
+ // initialized, `BIO_read` and `BIO_write` will fail.
722
769
  OPENSSL_EXPORT void BIO_set_init(BIO *bio, int init);
723
770
 
724
- // BIO_get_init returns whether |bio| has been fully initialized.
771
+ // BIO_get_init returns whether `bio` has been fully initialized.
725
772
  OPENSSL_EXPORT int BIO_get_init(BIO *bio);
726
773
 
727
- // These are values of the |cmd| argument to |BIO_ctrl|.
774
+ // These are values of the `cmd` argument to `BIO_ctrl`.
728
775
 
729
- // BIO_CTRL_RESET implements |BIO_reset|. The arguments are unused.
776
+ // BIO_CTRL_RESET implements `BIO_reset`. The arguments are unused.
730
777
  #define BIO_CTRL_RESET 1
731
778
 
732
- // BIO_CTRL_EOF implements |BIO_eof|. The arguments are unused.
779
+ // BIO_CTRL_EOF implements `BIO_eof`. The arguments are unused.
733
780
  #define BIO_CTRL_EOF 2
734
781
 
735
782
  // BIO_CTRL_INFO is a legacy command that returns information specific to the
736
- // type of |BIO|. It is not safe to call generically and should not be
737
- // implemented in new |BIO| types.
783
+ // type of `BIO`. It is not safe to call generically and should not be
784
+ // implemented in new `BIO` types.
738
785
  #define BIO_CTRL_INFO 3
739
786
 
740
- // BIO_CTRL_GET_CLOSE returns the close flag set by |BIO_CTRL_SET_CLOSE|. The
787
+ // BIO_CTRL_GET_CLOSE returns the close flag set by `BIO_CTRL_SET_CLOSE`. The
741
788
  // arguments are unused.
742
789
  #define BIO_CTRL_GET_CLOSE 8
743
790
 
744
- // BIO_CTRL_SET_CLOSE implements |BIO_set_close|. The |larg| argument is the
791
+ // BIO_CTRL_SET_CLOSE implements `BIO_set_close`. The `larg` argument is the
745
792
  // close flag.
746
793
  #define BIO_CTRL_SET_CLOSE 9
747
794
 
748
- // BIO_CTRL_PENDING implements |BIO_pending|. The arguments are unused.
795
+ // BIO_CTRL_PENDING implements `BIO_pending`. The arguments are unused.
749
796
  #define BIO_CTRL_PENDING 10
750
797
 
751
- // BIO_CTRL_FLUSH implements |BIO_flush|. The arguments are unused.
798
+ // BIO_CTRL_FLUSH implements `BIO_flush`. The arguments are unused.
752
799
  #define BIO_CTRL_FLUSH 11
753
800
 
754
- // BIO_CTRL_WPENDING implements |BIO_wpending|. The arguments are unused.
801
+ // BIO_CTRL_WPENDING implements `BIO_wpending`. The arguments are unused.
755
802
  #define BIO_CTRL_WPENDING 13
756
803
 
757
804
  // BIO_CTRL_SET_CALLBACK sets an informational callback of type
758
805
  // int cb(BIO *bio, int state, int ret)
759
806
  #define BIO_CTRL_SET_CALLBACK 14
760
807
 
761
- // BIO_CTRL_GET_CALLBACK returns the callback set by |BIO_CTRL_SET_CALLBACK|.
808
+ // BIO_CTRL_GET_CALLBACK returns the callback set by `BIO_CTRL_SET_CALLBACK`.
762
809
  #define BIO_CTRL_GET_CALLBACK 15
763
810
 
764
811
  // The following are never used, but are defined to aid porting existing code.
@@ -772,7 +819,7 @@ OPENSSL_EXPORT int BIO_get_init(BIO *bio);
772
819
 
773
820
  // ex_data functions.
774
821
  //
775
- // See |ex_data.h| for details.
822
+ // See `ex_data.h` for details.
776
823
 
777
824
  OPENSSL_EXPORT int BIO_get_ex_new_index(long argl, void *argp,
778
825
  CRYPTO_EX_unused *unused,
@@ -787,13 +834,19 @@ OPENSSL_EXPORT void *BIO_get_ex_data(const BIO *bio, int idx);
787
834
 
788
835
  // Deprecated functions.
789
836
 
790
- // BIO_f_base64 returns a filter |BIO| that base64-encodes data written into
791
- // it, and decodes data read from it. |BIO_gets| is not supported. Call
792
- // |BIO_flush| when done writing, to signal that no more data are to be
793
- // encoded. The flag |BIO_FLAGS_BASE64_NO_NL| may be set to encode all the data
837
+ // BIO_free_all calls `BIO_free`. Code that targets BoringSSL does not need to
838
+ // call a separate free function for `BIO`s that are part of a chain.
839
+ OPENSSL_EXPORT void BIO_free_all(BIO *bio);
840
+
841
+ typedef BIO_info_cb bio_info_cb;
842
+
843
+ // BIO_f_base64 returns a filter `BIO` that base64-encodes data written into
844
+ // it, and decodes data read from it. `BIO_gets` is not supported. Call
845
+ // `BIO_flush` when done writing, to signal that no more data are to be
846
+ // encoded. The flag `BIO_FLAGS_BASE64_NO_NL` may be set to encode all the data
794
847
  // on one line.
795
848
  //
796
- // Use |EVP_EncodeBlock| and |EVP_DecodeBase64| instead.
849
+ // Use `EVP_EncodeBlock` and `EVP_DecodeBase64` instead.
797
850
  OPENSSL_EXPORT const BIO_METHOD *BIO_f_base64(void);
798
851
 
799
852
  OPENSSL_EXPORT void BIO_set_retry_special(BIO *bio);
@@ -801,17 +854,59 @@ OPENSSL_EXPORT void BIO_set_retry_special(BIO *bio);
801
854
  // BIO_set_write_buffer_size returns zero.
802
855
  OPENSSL_EXPORT int BIO_set_write_buffer_size(BIO *bio, int buffer_size);
803
856
 
804
- // BIO_set_shutdown sets a method-specific "shutdown" bit on |bio|.
857
+ // BIO_set_shutdown sets a method-specific "shutdown" bit on `bio`.
805
858
  OPENSSL_EXPORT void BIO_set_shutdown(BIO *bio, int shutdown);
806
859
 
807
860
  // BIO_get_shutdown returns the method-specific "shutdown" bit.
808
861
  OPENSSL_EXPORT int BIO_get_shutdown(BIO *bio);
809
862
 
810
- // BIO_meth_set_puts returns one. |BIO_puts| is implemented with |BIO_write| in
863
+ // BIO_meth_set_puts returns one. `BIO_puts` is implemented with `BIO_write` in
811
864
  // BoringSSL.
812
865
  OPENSSL_EXPORT int BIO_meth_set_puts(BIO_METHOD *method,
813
866
  int (*puts)(BIO *, const char *));
814
867
 
868
+ #if !defined(OPENSSL_NO_SOCK)
869
+ // The following functions return function pointers, possibly NULL, which are
870
+ // compatible with the corresponding `BIO_meth_set_*` function. `method` must be
871
+ // `BIO_s_socket` or the program will abort.
872
+ //
873
+ // Using these functions is inherently unsafe and fragile. It is not possible to
874
+ // use them in a future-proof way. See
875
+ // https://github.com/openssl/openssl/issues/26047 for details. BoringSSL
876
+ // implements them solely for compatibility with Folly and older versions of
877
+ // PostgreSQL. To work around the future-proofing problems, the return values
878
+ // may diverge from the true implementation of `BIO_s_socket`.
879
+ //
880
+ // Caller should not use these functions. They are not necessary to define
881
+ // custom `BIO_METHOD`s. Instead, callers should either:
882
+ //
883
+ // - Define a custom `BIO_METHOD` that owns a socket `BIO` somewhere in the
884
+ // custom data. See `BIO_set_data`.
885
+ //
886
+ // - Define a custom `BIO_METHOD` that wraps a socket `BIO` as a filter. See
887
+ // `BIO_push` and `BIO_next`.
888
+ //
889
+ // - Define a custom `BIO_METHOD` without `BIO_s_socket` at all. If not using
890
+ // the built-in read or write functions, `BIO_s_socket` only provides a no-op
891
+ // `BIO_CTRL_FLUSH` implementation. This can be implemented by the caller.
892
+ OPENSSL_EXPORT int (*BIO_meth_get_write(const BIO_METHOD *method))(BIO *,
893
+ const char *,
894
+ int);
895
+ OPENSSL_EXPORT int (*BIO_meth_get_read(const BIO_METHOD *method))(BIO *, char *,
896
+ int);
897
+ OPENSSL_EXPORT int (*BIO_meth_get_gets(const BIO_METHOD *method))(BIO *, char *,
898
+ int);
899
+ OPENSSL_EXPORT int (*BIO_meth_get_puts(const BIO_METHOD *method))(BIO *,
900
+ const char *);
901
+ OPENSSL_EXPORT long (*BIO_meth_get_ctrl(const BIO_METHOD *method))(BIO *, int,
902
+ long,
903
+ void *);
904
+ OPENSSL_EXPORT int (*BIO_meth_get_create(const BIO_METHOD *method))(BIO *);
905
+ OPENSSL_EXPORT int (*BIO_meth_get_destroy(const BIO_METHOD *method))(BIO *);
906
+ OPENSSL_EXPORT long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *method))(
907
+ BIO *, int, BIO_info_cb *);
908
+ #endif // !OPENSSL_NO_SOCK
909
+
815
910
 
816
911
  // Private functions
817
912
 
@@ -825,8 +920,8 @@ OPENSSL_EXPORT int BIO_meth_set_puts(BIO_METHOD *method,
825
920
  // or change the data in any way.
826
921
  #define BIO_FLAGS_MEM_RDONLY 0x200
827
922
 
828
- // BIO_TYPE_DESCRIPTOR denotes that the |BIO| responds to the |BIO_C_SET_FD|
829
- // (|BIO_set_fd|) and |BIO_C_GET_FD| (|BIO_get_fd|) control hooks.
923
+ // BIO_TYPE_DESCRIPTOR denotes that the `BIO` responds to the `BIO_C_SET_FD`
924
+ // (`BIO_set_fd`) and `BIO_C_GET_FD` (`BIO_get_fd`) control hooks.
830
925
  #define BIO_TYPE_DESCRIPTOR 0x0100 // socket, fd, connect or accept
831
926
  #define BIO_TYPE_FILTER 0x0200
832
927
  #define BIO_TYPE_SOURCE_SINK 0x0400
@@ -856,48 +951,10 @@ OPENSSL_EXPORT int BIO_meth_set_puts(BIO_METHOD *method,
856
951
  #define BIO_TYPE_ASN1 (22 | BIO_TYPE_FILTER)
857
952
  #define BIO_TYPE_COMP (23 | BIO_TYPE_FILTER)
858
953
 
859
- // BIO_TYPE_START is the first user-allocated |BIO| type. No pre-defined type,
954
+ // BIO_TYPE_START is the first user-allocated `BIO` type. No pre-defined type,
860
955
  // flag bits aside, may exceed this value.
861
956
  #define BIO_TYPE_START 128
862
957
 
863
- struct bio_method_st {
864
- int type;
865
- const char *name;
866
- int (*bwrite)(BIO *, const char *, int);
867
- int (*bread)(BIO *, char *, int);
868
- // TODO(fork): remove bputs.
869
- int (*bputs)(BIO *, const char *);
870
- int (*bgets)(BIO *, char *, int);
871
- long (*ctrl)(BIO *, int, long, void *);
872
- int (*create)(BIO *);
873
- int (*destroy)(BIO *);
874
- long (*callback_ctrl)(BIO *, int, bio_info_cb);
875
- };
876
-
877
- struct bio_st {
878
- const BIO_METHOD *method;
879
- CRYPTO_EX_DATA ex_data;
880
-
881
- // init is non-zero if this |BIO| has been initialised.
882
- int init;
883
- // shutdown is often used by specific |BIO_METHOD|s to determine whether
884
- // they own some underlying resource. This flag can often by controlled by
885
- // |BIO_set_close|. For example, whether an fd BIO closes the underlying fd
886
- // when it, itself, is closed.
887
- int shutdown;
888
- int flags;
889
- int retry_reason;
890
- // num is a BIO-specific value. For example, in fd BIOs it's used to store a
891
- // file descriptor.
892
- int num;
893
- CRYPTO_refcount_t references;
894
- void *ptr;
895
- // next_bio points to the next |BIO| in a chain. This |BIO| owns a reference
896
- // to |next_bio|.
897
- BIO *next_bio; // used by filter BIOs
898
- uint64_t num_read, num_write;
899
- };
900
-
901
958
  #define BIO_C_SET_CONNECT 100
902
959
  #define BIO_C_DO_STATE_MACHINE 101
903
960
  #define BIO_C_SET_NBIO 102