grpc 1.63.0 → 1.65.2

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 (1196) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +105 -103
  3. data/include/grpc/credentials.h +1222 -0
  4. data/include/grpc/event_engine/event_engine.h +13 -6
  5. data/include/grpc/grpc.h +7 -0
  6. data/include/grpc/grpc_crl_provider.h +1 -0
  7. data/include/grpc/grpc_security.h +0 -1171
  8. data/include/grpc/impl/channel_arg_names.h +7 -6
  9. data/include/grpc/module.modulemap +2 -0
  10. data/include/grpc/passive_listener.h +62 -0
  11. data/include/grpc/support/log.h +7 -17
  12. data/include/grpc/support/port_platform.h +3 -0
  13. data/src/core/{lib/channel → channelz}/channel_trace.cc +57 -63
  14. data/src/core/{lib/channel → channelz}/channel_trace.h +22 -20
  15. data/src/core/{lib/channel → channelz}/channelz.cc +71 -9
  16. data/src/core/{lib/channel → channelz}/channelz.h +52 -13
  17. data/src/core/{lib/channel → channelz}/channelz_registry.cc +11 -9
  18. data/src/core/{lib/channel → channelz}/channelz_registry.h +6 -6
  19. data/src/core/client_channel/backup_poller.cc +4 -5
  20. data/src/core/client_channel/client_channel.cc +1324 -0
  21. data/src/core/client_channel/client_channel.h +243 -0
  22. data/src/core/client_channel/client_channel_filter.cc +312 -759
  23. data/src/core/client_channel/client_channel_filter.h +13 -68
  24. data/src/core/client_channel/client_channel_internal.h +19 -7
  25. data/src/core/client_channel/client_channel_plugin.cc +1 -14
  26. data/src/core/client_channel/client_channel_service_config.h +4 -4
  27. data/src/core/client_channel/config_selector.cc +1 -1
  28. data/src/core/client_channel/config_selector.h +5 -4
  29. data/src/core/client_channel/connector.h +1 -1
  30. data/src/core/client_channel/dynamic_filters.cc +6 -5
  31. data/src/core/client_channel/dynamic_filters.h +1 -3
  32. data/src/core/client_channel/load_balanced_call_destination.cc +336 -0
  33. data/src/core/client_channel/load_balanced_call_destination.h +49 -0
  34. data/src/core/client_channel/local_subchannel_pool.cc +5 -3
  35. data/src/core/client_channel/retry_filter.cc +3 -10
  36. data/src/core/client_channel/retry_filter.h +5 -9
  37. data/src/core/client_channel/retry_filter_legacy_call_data.cc +70 -76
  38. data/src/core/client_channel/retry_filter_legacy_call_data.h +0 -2
  39. data/src/core/client_channel/retry_service_config.cc +4 -5
  40. data/src/core/client_channel/retry_service_config.h +3 -3
  41. data/src/core/client_channel/subchannel.cc +241 -129
  42. data/src/core/client_channel/subchannel.h +31 -19
  43. data/src/core/client_channel/subchannel_pool_interface.cc +0 -2
  44. data/src/core/client_channel/subchannel_pool_interface.h +2 -4
  45. data/src/core/client_channel/subchannel_stream_client.cc +41 -52
  46. data/src/core/client_channel/subchannel_stream_client.h +2 -4
  47. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -13
  48. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +3 -2
  49. data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
  50. data/src/core/ext/filters/census/grpc_context.cc +2 -4
  51. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +16 -15
  52. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +12 -11
  53. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +11 -16
  54. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +5 -4
  55. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -3
  56. data/src/core/ext/filters/http/client/http_client_filter.cc +6 -4
  57. data/src/core/ext/filters/http/client/http_client_filter.h +6 -5
  58. data/src/core/ext/filters/http/client_authority_filter.cc +5 -3
  59. data/src/core/ext/filters/http/client_authority_filter.h +6 -4
  60. data/src/core/ext/filters/http/message_compress/compression_filter.cc +19 -23
  61. data/src/core/ext/filters/http/message_compress/compression_filter.h +10 -8
  62. data/src/core/ext/filters/http/server/http_server_filter.cc +4 -4
  63. data/src/core/ext/filters/http/server/http_server_filter.h +6 -5
  64. data/src/core/ext/filters/message_size/message_size_filter.cc +16 -28
  65. data/src/core/ext/filters/message_size/message_size_filter.h +14 -12
  66. data/src/core/ext/filters/rbac/rbac_filter.cc +13 -11
  67. data/src/core/ext/filters/rbac/rbac_filter.h +6 -5
  68. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
  69. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
  70. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +14 -18
  71. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +4 -2
  72. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
  73. data/src/core/ext/transport/chttp2/alpn/alpn.cc +5 -4
  74. data/src/core/ext/transport/chttp2/alpn/alpn.h +2 -2
  75. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +23 -38
  76. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +2 -8
  77. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +233 -158
  78. data/src/core/ext/transport/chttp2/server/chttp2_server.h +36 -3
  79. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +6 -6
  80. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +1 -2
  81. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +8 -7
  82. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -2
  83. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +190 -165
  84. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +10 -11
  85. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +3 -3
  86. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +2 -2
  87. data/src/core/ext/transport/chttp2/transport/decode_huff.h +2 -2
  88. data/src/core/ext/transport/chttp2/transport/flow_control.cc +6 -8
  89. data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -6
  90. data/src/core/ext/transport/chttp2/transport/frame.cc +4 -4
  91. data/src/core/ext/transport/chttp2/transport/frame.h +2 -2
  92. data/src/core/ext/transport/chttp2/transport/frame_data.cc +3 -3
  93. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -2
  94. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +5 -5
  95. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -2
  96. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -9
  97. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -2
  98. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +4 -5
  99. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -2
  100. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +10 -7
  101. data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -2
  102. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -4
  103. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -2
  104. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +2 -2
  105. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +9 -7
  106. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +10 -4
  107. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +10 -9
  108. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -2
  109. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +4 -3
  110. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +3 -3
  111. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +29 -31
  112. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
  113. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +8 -13
  114. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -2
  115. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +3 -3
  116. data/src/core/ext/transport/chttp2/transport/http2_settings.h +3 -3
  117. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +2 -2
  118. data/src/core/ext/transport/chttp2/transport/internal.h +31 -23
  119. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.cc +4 -3
  120. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h +2 -2
  121. data/src/core/ext/transport/chttp2/transport/parsing.cc +29 -39
  122. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +1 -2
  123. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +2 -2
  124. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +3 -5
  125. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +1 -4
  126. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +30 -15
  127. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +7 -6
  128. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +10 -11
  129. data/src/core/ext/transport/chttp2/transport/varint.cc +2 -2
  130. data/src/core/ext/transport/chttp2/transport/varint.h +4 -3
  131. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +4 -3
  132. data/src/core/ext/transport/chttp2/transport/write_size_policy.h +2 -2
  133. data/src/core/ext/transport/chttp2/transport/writing.cc +59 -47
  134. data/src/core/ext/transport/inproc/inproc_transport.cc +65 -41
  135. data/src/core/ext/transport/inproc/inproc_transport.h +2 -5
  136. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +20 -23
  137. data/src/core/ext/transport/inproc/legacy_inproc_transport.h +1 -4
  138. data/src/core/{lib/transport → handshaker/endpoint_info}/endpoint_info_handshaker.cc +6 -6
  139. data/src/core/{lib/transport → handshaker/endpoint_info}/endpoint_info_handshaker.h +3 -3
  140. data/src/core/{lib/transport → handshaker}/handshaker.cc +14 -20
  141. data/src/core/{lib/transport → handshaker}/handshaker.h +4 -5
  142. data/src/core/{lib/transport → handshaker}/handshaker_factory.h +19 -3
  143. data/src/core/{lib/transport → handshaker}/handshaker_registry.cc +3 -3
  144. data/src/core/{lib/transport → handshaker}/handshaker_registry.h +6 -6
  145. data/src/core/{lib/transport → handshaker/http_connect}/http_connect_handshaker.cc +16 -25
  146. data/src/core/{lib/transport → handshaker/http_connect}/http_connect_handshaker.h +3 -3
  147. data/src/core/{client_channel → handshaker/http_connect}/http_proxy_mapper.cc +16 -18
  148. data/src/core/{client_channel → handshaker/http_connect}/http_proxy_mapper.h +6 -6
  149. data/src/core/{lib/handshaker → handshaker}/proxy_mapper.h +5 -5
  150. data/src/core/{lib/handshaker → handshaker}/proxy_mapper_registry.cc +3 -3
  151. data/src/core/{lib/handshaker → handshaker}/proxy_mapper_registry.h +6 -6
  152. data/src/core/{lib/security/transport → handshaker/security}/secure_endpoint.cc +42 -36
  153. data/src/core/{lib/security/transport → handshaker/security}/secure_endpoint.h +4 -7
  154. data/src/core/{lib/security/transport → handshaker/security}/security_handshaker.cc +35 -47
  155. data/src/core/{lib/security/transport → handshaker/security}/security_handshaker.h +5 -6
  156. data/src/core/{lib/transport → handshaker/tcp_connect}/tcp_connect_handshaker.cc +10 -9
  157. data/src/core/{lib/transport → handshaker/tcp_connect}/tcp_connect_handshaker.h +3 -3
  158. data/src/core/lib/address_utils/parse_address.cc +30 -40
  159. data/src/core/lib/address_utils/parse_address.h +2 -2
  160. data/src/core/lib/address_utils/sockaddr_utils.cc +20 -15
  161. data/src/core/lib/address_utils/sockaddr_utils.h +2 -2
  162. data/src/core/lib/avl/avl.h +3 -3
  163. data/src/core/lib/backoff/backoff.cc +2 -2
  164. data/src/core/lib/backoff/backoff.h +2 -2
  165. data/src/core/lib/backoff/random_early_detection.cc +2 -2
  166. data/src/core/lib/backoff/random_early_detection.h +2 -2
  167. data/src/core/lib/channel/call_finalization.h +2 -2
  168. data/src/core/lib/channel/channel_args.cc +17 -21
  169. data/src/core/lib/channel/channel_args.h +20 -10
  170. data/src/core/lib/channel/channel_args_preconditioning.cc +2 -2
  171. data/src/core/lib/channel/channel_args_preconditioning.h +1 -2
  172. data/src/core/lib/channel/channel_stack.cc +13 -70
  173. data/src/core/lib/channel/channel_stack.h +14 -39
  174. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  175. data/src/core/lib/channel/channel_stack_builder.h +2 -7
  176. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -150
  177. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -4
  178. data/src/core/lib/channel/connected_channel.cc +40 -694
  179. data/src/core/lib/channel/promise_based_filter.cc +111 -122
  180. data/src/core/lib/channel/promise_based_filter.h +219 -531
  181. data/src/core/lib/channel/status_util.cc +3 -3
  182. data/src/core/lib/channel/status_util.h +1 -2
  183. data/src/core/lib/compression/compression.cc +2 -3
  184. data/src/core/lib/compression/compression_internal.cc +3 -3
  185. data/src/core/lib/compression/compression_internal.h +1 -2
  186. data/src/core/lib/compression/message_compress.cc +15 -14
  187. data/src/core/lib/compression/message_compress.h +1 -2
  188. data/src/core/lib/config/config_vars.cc +5 -10
  189. data/src/core/lib/config/config_vars.h +3 -7
  190. data/src/core/lib/config/config_vars_non_generated.cc +2 -2
  191. data/src/core/lib/config/core_configuration.cc +9 -8
  192. data/src/core/lib/config/core_configuration.h +8 -8
  193. data/src/core/lib/config/load_config.cc +4 -4
  194. data/src/core/lib/config/load_config.h +2 -2
  195. data/src/core/lib/debug/event_log.cc +3 -3
  196. data/src/core/lib/debug/event_log.h +3 -3
  197. data/src/core/lib/debug/trace.cc +44 -61
  198. data/src/core/lib/debug/trace.h +2 -97
  199. data/src/core/lib/debug/trace_flags.cc +255 -0
  200. data/src/core/lib/debug/trace_flags.h +133 -0
  201. data/src/core/lib/debug/trace_impl.h +115 -0
  202. data/src/core/lib/event_engine/ares_resolver.cc +23 -26
  203. data/src/core/lib/event_engine/ares_resolver.h +3 -5
  204. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +4 -2
  205. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +3 -3
  206. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +19 -23
  207. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +2 -1
  208. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +1 -2
  209. data/src/core/lib/event_engine/channel_args_endpoint_config.h +1 -2
  210. data/src/core/lib/event_engine/common_closures.h +1 -2
  211. data/src/core/lib/event_engine/default_event_engine.cc +1 -2
  212. data/src/core/lib/event_engine/default_event_engine.h +1 -2
  213. data/src/core/lib/event_engine/default_event_engine_factory.cc +1 -2
  214. data/src/core/lib/event_engine/default_event_engine_factory.h +1 -2
  215. data/src/core/lib/event_engine/event_engine.cc +29 -5
  216. data/src/core/lib/event_engine/event_engine_context.h +1 -2
  217. data/src/core/lib/event_engine/extensions/can_track_errors.h +2 -2
  218. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +2 -2
  219. data/src/core/lib/event_engine/extensions/supports_fd.h +8 -2
  220. data/src/core/lib/event_engine/extensions/tcp_trace.h +43 -0
  221. data/src/core/lib/event_engine/forkable.cc +11 -11
  222. data/src/core/lib/event_engine/forkable.h +1 -13
  223. data/src/core/lib/event_engine/grpc_polled_fd.h +1 -2
  224. data/src/core/lib/event_engine/handle_containers.h +1 -2
  225. data/src/core/lib/event_engine/memory_allocator_factory.h +1 -2
  226. data/src/core/lib/event_engine/poller.h +1 -2
  227. data/src/core/lib/event_engine/posix.h +1 -2
  228. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +19 -19
  229. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +1 -2
  230. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +11 -11
  231. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +1 -2
  232. data/src/core/lib/event_engine/posix_engine/event_poller.h +1 -2
  233. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +2 -2
  234. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +2 -2
  235. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +1 -2
  236. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +5 -5
  237. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +2 -2
  238. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +3 -3
  239. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +2 -2
  240. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +1 -1
  241. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +2 -2
  242. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +43 -58
  243. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +14 -13
  244. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +34 -17
  245. data/src/core/lib/event_engine/posix_engine/posix_engine.h +3 -2
  246. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +1 -2
  247. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +17 -18
  248. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +1 -2
  249. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +24 -28
  250. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +1 -2
  251. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +22 -20
  252. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -3
  253. data/src/core/lib/event_engine/posix_engine/timer.cc +2 -3
  254. data/src/core/lib/event_engine/posix_engine/timer.h +1 -2
  255. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +2 -2
  256. data/src/core/lib/event_engine/posix_engine/timer_heap.h +2 -2
  257. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +9 -11
  258. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -2
  259. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +3 -3
  260. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +1 -2
  261. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +2 -2
  262. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -2
  263. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +2 -2
  264. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -2
  265. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +2 -2
  266. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +2 -2
  267. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +2 -2
  268. data/src/core/lib/event_engine/query_extensions.h +3 -2
  269. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +1 -2
  270. data/src/core/lib/event_engine/resolved_address.cc +5 -4
  271. data/src/core/lib/event_engine/resolved_address_internal.h +1 -2
  272. data/src/core/lib/event_engine/shim.cc +3 -3
  273. data/src/core/lib/event_engine/slice.cc +4 -3
  274. data/src/core/lib/event_engine/slice_buffer.cc +1 -2
  275. data/src/core/lib/event_engine/tcp_socket_utils.cc +18 -16
  276. data/src/core/lib/event_engine/tcp_socket_utils.h +1 -2
  277. data/src/core/lib/event_engine/thread_local.cc +2 -2
  278. data/src/core/lib/event_engine/thread_local.h +1 -1
  279. data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -2
  280. data/src/core/lib/event_engine/thread_pool/thread_count.h +2 -3
  281. data/src/core/lib/event_engine/thread_pool/thread_pool.h +1 -2
  282. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +2 -2
  283. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +27 -28
  284. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +4 -8
  285. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +16 -15
  286. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +5 -5
  287. data/src/core/lib/event_engine/time_util.cc +1 -2
  288. data/src/core/lib/event_engine/time_util.h +1 -2
  289. data/src/core/lib/event_engine/trace.h +7 -19
  290. data/src/core/lib/event_engine/utils.cc +1 -2
  291. data/src/core/lib/event_engine/utils.h +1 -2
  292. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +31 -30
  293. data/src/core/lib/event_engine/windows/iocp.cc +10 -8
  294. data/src/core/lib/event_engine/windows/iocp.h +1 -1
  295. data/src/core/lib/event_engine/windows/win_socket.cc +32 -22
  296. data/src/core/lib/event_engine/windows/win_socket.h +4 -5
  297. data/src/core/lib/event_engine/windows/windows_endpoint.cc +24 -25
  298. data/src/core/lib/event_engine/windows/windows_engine.cc +205 -90
  299. data/src/core/lib/event_engine/windows/windows_engine.h +136 -25
  300. data/src/core/lib/event_engine/windows/windows_listener.cc +19 -29
  301. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +2 -2
  302. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +1 -2
  303. data/src/core/lib/event_engine/work_queue/work_queue.h +1 -2
  304. data/src/core/lib/experiments/config.cc +16 -14
  305. data/src/core/lib/experiments/config.h +2 -2
  306. data/src/core/lib/experiments/experiments.cc +57 -158
  307. data/src/core/lib/experiments/experiments.h +35 -52
  308. data/src/core/lib/gprpp/atomic_utils.h +2 -2
  309. data/src/core/lib/gprpp/bitset.h +3 -3
  310. data/src/core/lib/gprpp/chunked_vector.h +6 -5
  311. data/src/core/lib/gprpp/construct_destruct.h +2 -2
  312. data/src/core/lib/gprpp/crash.cc +3 -5
  313. data/src/core/lib/gprpp/crash.h +2 -2
  314. data/src/core/lib/gprpp/debug_location.h +2 -2
  315. data/src/core/lib/gprpp/directory_reader.h +2 -2
  316. data/src/core/lib/gprpp/down_cast.h +3 -3
  317. data/src/core/lib/gprpp/dual_ref_counted.h +54 -41
  318. data/src/core/lib/gprpp/dump_args.cc +54 -0
  319. data/src/core/lib/gprpp/dump_args.h +69 -0
  320. data/src/core/lib/gprpp/env.h +2 -2
  321. data/src/core/lib/gprpp/examine_stack.cc +2 -2
  322. data/src/core/lib/gprpp/examine_stack.h +2 -2
  323. data/src/core/lib/gprpp/fork.cc +1 -2
  324. data/src/core/lib/gprpp/fork.h +2 -2
  325. data/src/core/lib/gprpp/glob.cc +70 -0
  326. data/src/core/lib/gprpp/glob.h +29 -0
  327. data/src/core/lib/gprpp/host_port.cc +6 -4
  328. data/src/core/lib/gprpp/host_port.h +2 -2
  329. data/src/core/lib/gprpp/linux/env.cc +2 -2
  330. data/src/core/lib/gprpp/load_file.cc +1 -2
  331. data/src/core/lib/gprpp/load_file.h +2 -2
  332. data/src/core/lib/gprpp/manual_constructor.h +2 -2
  333. data/src/core/lib/gprpp/match.h +2 -2
  334. data/src/core/lib/gprpp/memory.h +1 -2
  335. data/src/core/lib/gprpp/mpscq.cc +2 -2
  336. data/src/core/lib/gprpp/mpscq.h +5 -4
  337. data/src/core/lib/gprpp/no_destruct.h +2 -2
  338. data/src/core/lib/gprpp/notification.h +2 -2
  339. data/src/core/lib/gprpp/orphanable.h +2 -2
  340. data/src/core/lib/gprpp/overload.h +2 -2
  341. data/src/core/lib/gprpp/per_cpu.cc +2 -3
  342. data/src/core/lib/gprpp/per_cpu.h +1 -2
  343. data/src/core/lib/gprpp/posix/directory_reader.cc +2 -2
  344. data/src/core/lib/gprpp/posix/stat.cc +8 -7
  345. data/src/core/lib/gprpp/posix/thd.cc +18 -19
  346. data/src/core/lib/gprpp/ref_counted.h +35 -26
  347. data/src/core/lib/gprpp/ref_counted_ptr.h +2 -2
  348. data/src/core/lib/gprpp/ref_counted_string.cc +1 -2
  349. data/src/core/lib/gprpp/ref_counted_string.h +2 -2
  350. data/src/core/lib/gprpp/single_set_ptr.h +9 -6
  351. data/src/core/lib/gprpp/sorted_pack.h +2 -2
  352. data/src/core/lib/gprpp/stat.h +2 -2
  353. data/src/core/lib/gprpp/status_helper.cc +14 -33
  354. data/src/core/lib/gprpp/status_helper.h +5 -33
  355. data/src/core/lib/gprpp/strerror.cc +2 -2
  356. data/src/core/lib/gprpp/strerror.h +2 -2
  357. data/src/core/lib/gprpp/sync.h +5 -5
  358. data/src/core/lib/gprpp/table.h +2 -2
  359. data/src/core/lib/gprpp/tchar.cc +2 -2
  360. data/src/core/lib/gprpp/thd.h +7 -7
  361. data/src/core/lib/gprpp/time.cc +9 -10
  362. data/src/core/lib/gprpp/time.h +4 -4
  363. data/src/core/lib/gprpp/time_averaged_stats.cc +2 -2
  364. data/src/core/lib/gprpp/time_util.cc +5 -4
  365. data/src/core/lib/gprpp/time_util.h +1 -2
  366. data/src/core/lib/gprpp/unique_type_name.h +3 -3
  367. data/src/core/lib/gprpp/uuid_v4.cc +2 -2
  368. data/src/core/lib/gprpp/uuid_v4.h +2 -2
  369. data/src/core/lib/gprpp/validation_errors.cc +12 -3
  370. data/src/core/lib/gprpp/validation_errors.h +13 -2
  371. data/src/core/lib/gprpp/windows/stat.cc +6 -5
  372. data/src/core/lib/gprpp/windows/thd.cc +7 -4
  373. data/src/core/lib/gprpp/work_serializer.cc +53 -62
  374. data/src/core/lib/gprpp/work_serializer.h +1 -2
  375. data/src/core/lib/iomgr/buffer_list.cc +5 -4
  376. data/src/core/lib/iomgr/buffer_list.h +1 -2
  377. data/src/core/lib/iomgr/call_combiner.cc +23 -31
  378. data/src/core/lib/iomgr/call_combiner.h +2 -5
  379. data/src/core/lib/iomgr/cfstream_handle.cc +4 -6
  380. data/src/core/lib/iomgr/closure.cc +2 -2
  381. data/src/core/lib/iomgr/closure.h +6 -7
  382. data/src/core/lib/iomgr/combiner.cc +13 -14
  383. data/src/core/lib/iomgr/combiner.h +1 -4
  384. data/src/core/lib/iomgr/endpoint.cc +1 -7
  385. data/src/core/lib/iomgr/endpoint.h +1 -4
  386. data/src/core/lib/iomgr/endpoint_cfstream.cc +26 -46
  387. data/src/core/lib/iomgr/endpoint_pair_posix.cc +6 -5
  388. data/src/core/lib/iomgr/endpoint_pair_windows.cc +15 -15
  389. data/src/core/lib/iomgr/error.cc +16 -24
  390. data/src/core/lib/iomgr/error.h +4 -4
  391. data/src/core/lib/iomgr/ev_apple.cc +3 -5
  392. data/src/core/lib/iomgr/ev_epoll1_linux.cc +58 -56
  393. data/src/core/lib/iomgr/ev_poll_posix.cc +47 -38
  394. data/src/core/lib/iomgr/ev_posix.cc +9 -11
  395. data/src/core/lib/iomgr/ev_posix.h +11 -8
  396. data/src/core/lib/iomgr/event_engine_shims/closure.cc +3 -4
  397. data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -2
  398. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +17 -31
  399. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +1 -2
  400. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +1 -2
  401. data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +1 -2
  402. data/src/core/lib/iomgr/exec_ctx.cc +7 -7
  403. data/src/core/lib/iomgr/exec_ctx.h +7 -5
  404. data/src/core/lib/iomgr/executor.cc +13 -23
  405. data/src/core/lib/iomgr/executor.h +1 -1
  406. data/src/core/lib/iomgr/fork_posix.cc +8 -10
  407. data/src/core/lib/iomgr/fork_windows.cc +3 -1
  408. data/src/core/lib/iomgr/grpc_if_nametoindex.h +2 -2
  409. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -3
  410. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +3 -5
  411. data/src/core/lib/iomgr/internal_errqueue.cc +5 -4
  412. data/src/core/lib/iomgr/iocp_windows.cc +13 -9
  413. data/src/core/lib/iomgr/iocp_windows.h +0 -1
  414. data/src/core/lib/iomgr/iomgr.cc +14 -19
  415. data/src/core/lib/iomgr/iomgr.h +2 -2
  416. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  417. data/src/core/lib/iomgr/iomgr_internal.h +2 -2
  418. data/src/core/lib/iomgr/iomgr_windows.cc +4 -2
  419. data/src/core/lib/iomgr/lockfree_event.cc +7 -8
  420. data/src/core/lib/iomgr/lockfree_event.h +1 -2
  421. data/src/core/lib/iomgr/polling_entity.cc +5 -5
  422. data/src/core/lib/iomgr/pollset.cc +2 -2
  423. data/src/core/lib/iomgr/pollset.h +0 -3
  424. data/src/core/lib/iomgr/pollset_set.cc +2 -2
  425. data/src/core/lib/iomgr/pollset_set_windows.cc +2 -2
  426. data/src/core/lib/iomgr/pollset_windows.cc +0 -2
  427. data/src/core/lib/iomgr/pollset_windows.h +0 -1
  428. data/src/core/lib/iomgr/python_util.h +1 -2
  429. data/src/core/lib/iomgr/resolve_address.cc +1 -2
  430. data/src/core/lib/iomgr/resolve_address.h +1 -2
  431. data/src/core/lib/iomgr/resolve_address_impl.h +2 -2
  432. data/src/core/lib/iomgr/resolve_address_posix.cc +7 -14
  433. data/src/core/lib/iomgr/resolve_address_posix.h +2 -2
  434. data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
  435. data/src/core/lib/iomgr/resolve_address_windows.h +2 -2
  436. data/src/core/lib/iomgr/resolved_address.h +2 -2
  437. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +3 -1
  438. data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
  439. data/src/core/lib/iomgr/socket_factory_posix.h +1 -2
  440. data/src/core/lib/iomgr/socket_mutator.cc +2 -3
  441. data/src/core/lib/iomgr/socket_mutator.h +1 -2
  442. data/src/core/lib/iomgr/socket_utils.h +2 -2
  443. data/src/core/lib/iomgr/socket_utils_common_posix.cc +28 -33
  444. data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
  445. data/src/core/lib/iomgr/socket_utils_posix.h +1 -2
  446. data/src/core/lib/iomgr/socket_windows.cc +8 -9
  447. data/src/core/lib/iomgr/tcp_client.cc +2 -2
  448. data/src/core/lib/iomgr/tcp_client.h +1 -2
  449. data/src/core/lib/iomgr/tcp_client_cfstream.cc +3 -5
  450. data/src/core/lib/iomgr/tcp_client_posix.cc +14 -19
  451. data/src/core/lib/iomgr/tcp_client_windows.cc +9 -9
  452. data/src/core/lib/iomgr/tcp_posix.cc +99 -125
  453. data/src/core/lib/iomgr/tcp_posix.h +0 -2
  454. data/src/core/lib/iomgr/tcp_server.cc +2 -2
  455. data/src/core/lib/iomgr/tcp_server.h +1 -2
  456. data/src/core/lib/iomgr/tcp_server_posix.cc +35 -38
  457. data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -2
  458. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +10 -12
  459. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -8
  460. data/src/core/lib/iomgr/tcp_server_windows.cc +25 -30
  461. data/src/core/lib/iomgr/tcp_windows.cc +33 -47
  462. data/src/core/lib/iomgr/timer.cc +2 -2
  463. data/src/core/lib/iomgr/timer.h +1 -2
  464. data/src/core/lib/iomgr/timer_generic.cc +20 -23
  465. data/src/core/lib/iomgr/timer_generic.h +0 -1
  466. data/src/core/lib/iomgr/timer_heap.cc +2 -3
  467. data/src/core/lib/iomgr/timer_manager.cc +21 -33
  468. data/src/core/lib/iomgr/timer_manager.h +2 -2
  469. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -2
  470. data/src/core/lib/iomgr/unix_sockets_posix.h +1 -2
  471. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +3 -1
  472. data/src/core/lib/iomgr/vsock.cc +3 -3
  473. data/src/core/lib/iomgr/vsock.h +1 -2
  474. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +3 -3
  475. data/src/core/lib/matchers/matchers.cc +2 -2
  476. data/src/core/lib/matchers/matchers.h +2 -2
  477. data/src/core/lib/promise/activity.cc +4 -3
  478. data/src/core/lib/promise/activity.h +34 -11
  479. data/src/core/lib/promise/all_ok.h +2 -2
  480. data/src/core/lib/promise/arena_promise.h +2 -2
  481. data/src/core/lib/promise/cancel_callback.h +24 -0
  482. data/src/core/lib/promise/context.h +14 -3
  483. data/src/core/lib/promise/detail/basic_seq.h +1 -2
  484. data/src/core/lib/promise/detail/join_state.h +365 -408
  485. data/src/core/lib/promise/detail/promise_factory.h +2 -2
  486. data/src/core/lib/promise/detail/promise_like.h +15 -8
  487. data/src/core/lib/promise/detail/seq_state.h +1192 -1192
  488. data/src/core/lib/promise/detail/status.h +4 -3
  489. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +2 -2
  490. data/src/core/lib/promise/for_each.h +91 -30
  491. data/src/core/lib/promise/if.h +2 -2
  492. data/src/core/lib/promise/interceptor_list.h +9 -10
  493. data/src/core/lib/promise/latch.h +17 -17
  494. data/src/core/lib/promise/loop.h +2 -2
  495. data/src/core/lib/promise/map.h +19 -2
  496. data/src/core/lib/promise/observable.h +182 -0
  497. data/src/core/lib/promise/party.cc +22 -23
  498. data/src/core/lib/promise/party.h +19 -17
  499. data/src/core/lib/promise/pipe.h +31 -50
  500. data/src/core/lib/promise/poll.h +6 -5
  501. data/src/core/lib/promise/prioritized_race.h +2 -2
  502. data/src/core/lib/promise/promise.h +3 -2
  503. data/src/core/lib/promise/race.h +2 -2
  504. data/src/core/lib/promise/seq.h +2 -2
  505. data/src/core/lib/promise/sleep.cc +1 -2
  506. data/src/core/lib/promise/sleep.h +1 -2
  507. data/src/core/lib/promise/status_flag.h +10 -8
  508. data/src/core/lib/promise/try_join.h +4 -3
  509. data/src/core/lib/promise/try_seq.h +4 -3
  510. data/src/core/lib/resource_quota/api.cc +1 -2
  511. data/src/core/lib/resource_quota/api.h +1 -2
  512. data/src/core/lib/resource_quota/arena.cc +57 -81
  513. data/src/core/lib/resource_quota/arena.h +119 -211
  514. data/src/core/lib/resource_quota/connection_quota.cc +8 -9
  515. data/src/core/lib/resource_quota/connection_quota.h +2 -2
  516. data/src/core/lib/resource_quota/memory_quota.cc +20 -21
  517. data/src/core/lib/resource_quota/memory_quota.h +6 -7
  518. data/src/core/lib/resource_quota/periodic_update.cc +3 -3
  519. data/src/core/lib/resource_quota/periodic_update.h +2 -2
  520. data/src/core/lib/resource_quota/resource_quota.cc +2 -2
  521. data/src/core/lib/resource_quota/resource_quota.h +2 -3
  522. data/src/core/lib/resource_quota/thread_quota.cc +4 -3
  523. data/src/core/lib/resource_quota/thread_quota.h +2 -2
  524. data/src/core/lib/security/authorization/audit_logging.cc +6 -6
  525. data/src/core/lib/security/authorization/audit_logging.h +1 -2
  526. data/src/core/lib/security/authorization/authorization_engine.h +2 -2
  527. data/src/core/lib/security/authorization/authorization_policy_provider.h +2 -3
  528. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +2 -3
  529. data/src/core/lib/security/authorization/evaluate_args.cc +8 -11
  530. data/src/core/lib/security/authorization/evaluate_args.h +1 -2
  531. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +4 -3
  532. data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -2
  533. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +9 -11
  534. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +8 -8
  535. data/src/core/lib/security/authorization/matchers.cc +4 -5
  536. data/src/core/lib/security/authorization/matchers.h +2 -2
  537. data/src/core/lib/security/authorization/rbac_policy.cc +2 -2
  538. data/src/core/lib/security/authorization/rbac_policy.h +1 -2
  539. data/src/core/lib/security/authorization/stdout_logger.cc +4 -3
  540. data/src/core/lib/security/authorization/stdout_logger.h +1 -2
  541. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +4 -4
  542. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +6 -6
  543. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +2 -2
  544. data/src/core/lib/security/context/security_context.cc +17 -16
  545. data/src/core/lib/security/context/security_context.h +33 -10
  546. data/src/core/lib/security/credentials/alts/alts_credentials.cc +1 -2
  547. data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -3
  548. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +4 -3
  549. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -3
  550. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +5 -6
  551. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +4 -5
  552. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +2 -2
  553. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -2
  554. data/src/core/lib/security/credentials/call_creds_util.cc +3 -3
  555. data/src/core/lib/security/credentials/call_creds_util.h +2 -2
  556. data/src/core/lib/security/credentials/channel_creds_registry.h +4 -4
  557. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +7 -5
  558. data/src/core/lib/security/credentials/composite/composite_credentials.cc +9 -8
  559. data/src/core/lib/security/credentials/composite/composite_credentials.h +3 -3
  560. data/src/core/lib/security/credentials/credentials.cc +10 -9
  561. data/src/core/lib/security/credentials/credentials.h +5 -4
  562. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +9 -8
  563. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +4 -4
  564. data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -2
  565. data/src/core/lib/security/credentials/external/aws_request_signer.h +2 -2
  566. data/src/core/lib/security/credentials/external/external_account_credentials.cc +16 -17
  567. data/src/core/lib/security/credentials/external/external_account_credentials.h +5 -5
  568. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +3 -4
  569. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +2 -2
  570. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -7
  571. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +3 -3
  572. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
  573. data/src/core/lib/security/credentials/fake/fake_credentials.h +3 -3
  574. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +4 -5
  575. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +19 -18
  576. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +3 -3
  577. data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -5
  578. data/src/core/lib/security/credentials/iam/iam_credentials.h +3 -3
  579. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
  580. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +2 -2
  581. data/src/core/lib/security/credentials/jwt/json_token.cc +19 -19
  582. data/src/core/lib/security/credentials/jwt/json_token.h +2 -3
  583. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +10 -8
  584. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +3 -3
  585. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +65 -69
  586. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
  587. data/src/core/lib/security/credentials/local/local_credentials.cc +1 -2
  588. data/src/core/lib/security/credentials/local/local_credentials.h +3 -3
  589. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
  590. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +6 -6
  591. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +9 -10
  592. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -5
  593. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +28 -34
  594. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +6 -4
  595. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +26 -25
  596. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +2 -2
  597. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +2 -2
  598. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +28 -36
  599. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +4 -4
  600. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +3 -3
  601. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +5 -4
  602. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -22
  603. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +1 -0
  604. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +5 -7
  605. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +1 -2
  606. data/src/core/lib/security/credentials/tls/tls_credentials.cc +15 -18
  607. data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
  608. data/src/core/lib/security/credentials/tls/tls_utils.cc +5 -6
  609. data/src/core/lib/security/credentials/tls/tls_utils.h +1 -2
  610. data/src/core/lib/security/credentials/xds/xds_credentials.cc +8 -8
  611. data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
  612. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +27 -30
  613. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +2 -2
  614. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +20 -17
  615. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
  616. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +6 -5
  617. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +3 -3
  618. data/src/core/lib/security/security_connector/load_system_roots.h +1 -2
  619. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +8 -8
  620. data/src/core/lib/security/security_connector/load_system_roots_supported.h +1 -2
  621. data/src/core/lib/security/security_connector/load_system_roots_windows.cc +1 -1
  622. data/src/core/lib/security/security_connector/local/local_security_connector.cc +19 -23
  623. data/src/core/lib/security/security_connector/local/local_security_connector.h +2 -2
  624. data/src/core/lib/security/security_connector/security_connector.cc +8 -10
  625. data/src/core/lib/security/security_connector/security_connector.h +4 -6
  626. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +23 -25
  627. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +2 -2
  628. data/src/core/lib/security/security_connector/ssl_utils.cc +29 -30
  629. data/src/core/lib/security/security_connector/ssl_utils.h +1 -2
  630. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +42 -53
  631. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +3 -3
  632. data/src/core/lib/security/transport/auth_filters.h +14 -13
  633. data/src/core/lib/security/transport/client_auth_filter.cc +13 -18
  634. data/src/core/lib/security/transport/server_auth_filter.cc +10 -13
  635. data/src/core/lib/security/util/json_util.cc +1 -2
  636. data/src/core/lib/security/util/json_util.h +1 -1
  637. data/src/core/lib/slice/percent_encoding.cc +4 -3
  638. data/src/core/lib/slice/slice.cc +11 -10
  639. data/src/core/lib/slice/slice.h +5 -5
  640. data/src/core/lib/slice/slice_buffer.cc +15 -14
  641. data/src/core/lib/slice/slice_buffer.h +1 -2
  642. data/src/core/lib/slice/slice_internal.h +3 -3
  643. data/src/core/lib/slice/slice_refcount.h +3 -6
  644. data/src/core/lib/slice/slice_string_helpers.cc +3 -3
  645. data/src/core/lib/slice/slice_string_helpers.h +1 -2
  646. data/src/core/lib/surface/api_trace.h +2 -5
  647. data/src/core/lib/surface/byte_buffer.cc +1 -2
  648. data/src/core/lib/surface/byte_buffer_reader.cc +4 -3
  649. data/src/core/lib/surface/call.cc +102 -3899
  650. data/src/core/lib/surface/call.h +158 -90
  651. data/src/core/lib/surface/call_details.cc +1 -2
  652. data/src/core/lib/surface/call_log_batch.cc +2 -3
  653. data/src/core/lib/surface/call_test_only.h +1 -2
  654. data/src/core/lib/surface/call_utils.cc +276 -0
  655. data/src/core/lib/surface/call_utils.h +449 -0
  656. data/src/core/lib/surface/channel.cc +17 -11
  657. data/src/core/lib/surface/channel.h +12 -10
  658. data/src/core/lib/surface/channel_create.cc +18 -9
  659. data/src/core/lib/surface/channel_create.h +5 -4
  660. data/src/core/lib/surface/channel_init.cc +27 -83
  661. data/src/core/lib/surface/channel_init.h +27 -100
  662. data/src/core/lib/surface/channel_stack_type.cc +2 -2
  663. data/src/core/lib/surface/client_call.cc +419 -0
  664. data/src/core/lib/surface/client_call.h +180 -0
  665. data/src/core/lib/surface/completion_queue.cc +45 -51
  666. data/src/core/lib/surface/completion_queue.h +1 -10
  667. data/src/core/lib/surface/completion_queue_factory.cc +9 -8
  668. data/src/core/lib/surface/completion_queue_factory.h +1 -2
  669. data/src/core/lib/surface/event_string.cc +2 -2
  670. data/src/core/lib/surface/event_string.h +1 -2
  671. data/src/core/lib/surface/filter_stack_call.cc +1157 -0
  672. data/src/core/lib/surface/filter_stack_call.h +369 -0
  673. data/src/core/lib/surface/init.cc +8 -8
  674. data/src/core/lib/surface/init_internally.cc +2 -2
  675. data/src/core/lib/surface/lame_client.cc +10 -13
  676. data/src/core/lib/surface/lame_client.h +6 -11
  677. data/src/core/lib/surface/legacy_channel.cc +52 -39
  678. data/src/core/lib/surface/legacy_channel.h +11 -21
  679. data/src/core/lib/surface/metadata_array.cc +1 -2
  680. data/src/core/lib/surface/server_call.cc +222 -0
  681. data/src/core/lib/surface/server_call.h +167 -0
  682. data/src/core/lib/surface/validate_metadata.cc +1 -2
  683. data/src/core/lib/surface/validate_metadata.h +3 -3
  684. data/src/core/lib/surface/version.cc +3 -4
  685. data/src/core/lib/transport/bdp_estimator.cc +7 -7
  686. data/src/core/lib/transport/bdp_estimator.h +6 -8
  687. data/src/core/lib/transport/{call_size_estimator.cc → call_arena_allocator.cc} +3 -3
  688. data/src/core/lib/transport/{call_size_estimator.h → call_arena_allocator.h} +29 -6
  689. data/src/core/lib/transport/call_destination.h +76 -0
  690. data/src/core/lib/transport/call_filters.cc +54 -21
  691. data/src/core/lib/transport/call_filters.h +240 -84
  692. data/src/core/lib/transport/call_final_info.cc +2 -2
  693. data/src/core/lib/transport/call_final_info.h +1 -2
  694. data/src/core/lib/transport/call_spine.cc +17 -19
  695. data/src/core/lib/transport/call_spine.h +238 -215
  696. data/src/core/lib/transport/connectivity_state.cc +9 -12
  697. data/src/core/lib/transport/connectivity_state.h +1 -4
  698. data/src/core/lib/transport/error_utils.cc +1 -2
  699. data/src/core/lib/transport/error_utils.h +1 -2
  700. data/src/core/lib/transport/interception_chain.cc +155 -0
  701. data/src/core/lib/transport/interception_chain.h +236 -0
  702. data/src/core/lib/transport/message.cc +1 -2
  703. data/src/core/lib/transport/metadata.cc +2 -2
  704. data/src/core/lib/transport/metadata_batch.cc +2 -2
  705. data/src/core/lib/transport/metadata_batch.h +43 -5
  706. data/src/core/lib/transport/metadata_compression_traits.h +2 -2
  707. data/src/core/lib/transport/metadata_info.cc +2 -2
  708. data/src/core/lib/transport/metadata_info.h +1 -1
  709. data/src/core/lib/transport/parsed_metadata.cc +2 -2
  710. data/src/core/lib/transport/parsed_metadata.h +1 -2
  711. data/src/core/lib/transport/simple_slice_based_metadata.h +2 -2
  712. data/src/core/lib/transport/status_conversion.cc +2 -2
  713. data/src/core/lib/transport/status_conversion.h +1 -2
  714. data/src/core/lib/transport/timeout_encoding.cc +5 -5
  715. data/src/core/lib/transport/timeout_encoding.h +2 -2
  716. data/src/core/lib/transport/transport.cc +4 -8
  717. data/src/core/lib/transport/transport.h +80 -74
  718. data/src/core/lib/transport/transport_op_string.cc +1 -2
  719. data/src/core/lib/uri/uri_parser.cc +3 -3
  720. data/src/core/lib/uri/uri_parser.h +2 -2
  721. data/src/core/load_balancing/address_filtering.cc +2 -2
  722. data/src/core/load_balancing/address_filtering.h +2 -2
  723. data/src/core/load_balancing/backend_metric_data.h +2 -2
  724. data/src/core/load_balancing/backend_metric_parser.cc +2 -2
  725. data/src/core/load_balancing/backend_metric_parser.h +2 -2
  726. data/src/core/load_balancing/child_policy_handler.cc +14 -14
  727. data/src/core/load_balancing/child_policy_handler.h +2 -2
  728. data/src/core/load_balancing/delegating_helper.h +2 -3
  729. data/src/core/load_balancing/endpoint_list.cc +11 -13
  730. data/src/core/load_balancing/endpoint_list.h +16 -10
  731. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +29 -30
  732. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +20 -8
  733. data/src/core/load_balancing/grpclb/grpclb.cc +65 -70
  734. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +3 -3
  735. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.h +1 -2
  736. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +1 -2
  737. data/src/core/load_balancing/grpclb/grpclb_client_stats.h +1 -2
  738. data/src/core/load_balancing/grpclb/load_balancer_api.cc +4 -6
  739. data/src/core/load_balancing/grpclb/load_balancer_api.h +2 -3
  740. data/src/core/load_balancing/health_check_client.cc +14 -18
  741. data/src/core/load_balancing/health_check_client.h +2 -2
  742. data/src/core/load_balancing/health_check_client_internal.h +1 -2
  743. data/src/core/load_balancing/lb_policy.cc +7 -10
  744. data/src/core/load_balancing/lb_policy.h +20 -5
  745. data/src/core/load_balancing/lb_policy_factory.h +3 -3
  746. data/src/core/load_balancing/lb_policy_registry.cc +5 -6
  747. data/src/core/load_balancing/lb_policy_registry.h +3 -3
  748. data/src/core/load_balancing/oob_backend_metric.cc +6 -9
  749. data/src/core/load_balancing/oob_backend_metric.h +2 -2
  750. data/src/core/load_balancing/oob_backend_metric_internal.h +1 -2
  751. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +36 -38
  752. data/src/core/load_balancing/outlier_detection/outlier_detection.h +5 -5
  753. data/src/core/load_balancing/pick_first/pick_first.cc +1141 -156
  754. data/src/core/load_balancing/priority/priority.cc +41 -38
  755. data/src/core/load_balancing/ring_hash/ring_hash.cc +45 -30
  756. data/src/core/load_balancing/ring_hash/ring_hash.h +5 -5
  757. data/src/core/load_balancing/rls/rls.cc +106 -99
  758. data/src/core/load_balancing/round_robin/round_robin.cc +43 -35
  759. data/src/core/load_balancing/subchannel_interface.h +1 -2
  760. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +4 -4
  761. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h +2 -2
  762. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +79 -58
  763. data/src/core/load_balancing/weighted_target/weighted_target.cc +29 -32
  764. data/src/core/load_balancing/weighted_target/weighted_target.h +1 -1
  765. data/src/core/load_balancing/xds/cds.cc +25 -28
  766. data/src/core/load_balancing/xds/xds_cluster_impl.cc +28 -28
  767. data/src/core/load_balancing/xds/xds_cluster_manager.cc +17 -20
  768. data/src/core/load_balancing/xds/xds_override_host.cc +46 -47
  769. data/src/core/load_balancing/xds/xds_override_host.h +5 -5
  770. data/src/core/load_balancing/xds/xds_wrr_locality.cc +12 -15
  771. data/src/core/plugin_registry/grpc_plugin_registry.cc +11 -10
  772. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +1 -2
  773. data/src/core/resolver/binder/binder_resolver.cc +7 -6
  774. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +8 -8
  775. data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +2 -2
  776. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +3 -3
  777. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -3
  778. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +36 -35
  779. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +20 -27
  780. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -7
  781. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +1 -1
  782. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -2
  783. data/src/core/resolver/dns/dns_resolver_plugin.cc +10 -10
  784. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +9 -14
  785. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +3 -3
  786. data/src/core/resolver/dns/event_engine/service_config_helper.cc +7 -7
  787. data/src/core/resolver/dns/event_engine/service_config_helper.h +2 -2
  788. data/src/core/resolver/dns/native/dns_resolver.cc +11 -13
  789. data/src/core/resolver/endpoint_addresses.cc +5 -5
  790. data/src/core/resolver/endpoint_addresses.h +2 -2
  791. data/src/core/resolver/fake/fake_resolver.cc +5 -5
  792. data/src/core/resolver/fake/fake_resolver.h +2 -3
  793. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +22 -23
  794. data/src/core/resolver/polling_resolver.cc +35 -40
  795. data/src/core/resolver/polling_resolver.h +1 -2
  796. data/src/core/resolver/resolver.cc +3 -7
  797. data/src/core/resolver/resolver.h +2 -4
  798. data/src/core/resolver/resolver_factory.h +3 -3
  799. data/src/core/resolver/resolver_registry.cc +11 -13
  800. data/src/core/resolver/resolver_registry.h +3 -3
  801. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +5 -6
  802. data/src/core/resolver/xds/xds_dependency_manager.cc +27 -27
  803. data/src/core/resolver/xds/xds_dependency_manager.h +7 -7
  804. data/src/core/resolver/xds/xds_resolver.cc +32 -39
  805. data/src/core/resolver/xds/xds_resolver_attributes.h +2 -2
  806. data/src/core/{lib/surface → server}/server.cc +306 -424
  807. data/src/core/{lib/surface → server}/server.h +43 -26
  808. data/src/core/{lib/channel → server}/server_call_tracer_filter.cc +16 -20
  809. data/src/core/{lib/channel → server}/server_call_tracer_filter.h +3 -3
  810. data/src/core/{ext/filters/server_config_selector → server}/server_config_selector.h +6 -6
  811. data/src/core/{ext/filters/server_config_selector → server}/server_config_selector_filter.cc +39 -40
  812. data/src/core/{ext/filters/server_config_selector → server}/server_config_selector_filter.h +3 -3
  813. data/src/core/{lib/surface → server}/server_interface.h +6 -4
  814. data/src/core/{ext/xds → server}/xds_channel_stack_modifier.cc +4 -4
  815. data/src/core/{ext/xds → server}/xds_channel_stack_modifier.h +5 -6
  816. data/src/core/{ext/xds → server}/xds_server_config_fetcher.cc +24 -26
  817. data/src/core/service_config/service_config.h +2 -3
  818. data/src/core/service_config/service_config_call_data.h +15 -13
  819. data/src/core/service_config/service_config_channel_arg_filter.cc +12 -11
  820. data/src/core/service_config/service_config_impl.cc +7 -7
  821. data/src/core/service_config/service_config_impl.h +4 -4
  822. data/src/core/service_config/service_config_parser.cc +4 -8
  823. data/src/core/service_config/service_config_parser.h +3 -3
  824. data/src/core/{lib/channel → telemetry}/call_tracer.cc +25 -35
  825. data/src/core/{lib/channel → telemetry}/call_tracer.h +33 -11
  826. data/src/core/{lib/debug → telemetry}/histogram_view.cc +2 -2
  827. data/src/core/{lib/debug → telemetry}/histogram_view.h +5 -5
  828. data/src/core/telemetry/metrics.cc +178 -0
  829. data/src/core/telemetry/metrics.h +562 -0
  830. data/src/core/{lib/debug → telemetry}/stats.cc +3 -3
  831. data/src/core/{lib/debug → telemetry}/stats.h +7 -7
  832. data/src/core/{lib/debug → telemetry}/stats_data.cc +3 -3
  833. data/src/core/{lib/debug → telemetry}/stats_data.h +6 -6
  834. data/src/core/{lib/channel → telemetry}/tcp_tracer.h +5 -5
  835. data/src/core/tsi/alts/crypt/aes_gcm.cc +1 -2
  836. data/src/core/tsi/alts/crypt/gsec.cc +1 -2
  837. data/src/core/tsi/alts/crypt/gsec.h +1 -2
  838. data/src/core/tsi/alts/frame_protector/alts_counter.cc +1 -2
  839. data/src/core/tsi/alts/frame_protector/alts_counter.h +1 -2
  840. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +1 -2
  841. data/src/core/tsi/alts/frame_protector/alts_crypter.h +1 -2
  842. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -15
  843. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +2 -2
  844. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +1 -2
  845. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +1 -2
  846. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +1 -2
  847. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -2
  848. data/src/core/tsi/alts/frame_protector/frame_handler.cc +1 -2
  849. data/src/core/tsi/alts/frame_protector/frame_handler.h +2 -2
  850. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +63 -64
  851. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -2
  852. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +5 -4
  853. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +1 -2
  854. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +54 -53
  855. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -2
  856. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +7 -5
  857. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -2
  858. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +4 -3
  859. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -2
  860. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +10 -8
  861. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +2 -2
  862. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +6 -5
  863. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +2 -2
  864. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +1 -2
  865. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +10 -6
  866. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +1 -2
  867. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +2 -2
  868. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -7
  869. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +2 -2
  870. data/src/core/tsi/fake_transport_security.cc +20 -21
  871. data/src/core/tsi/local_transport_security.cc +7 -7
  872. data/src/core/tsi/local_transport_security.h +1 -2
  873. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +6 -5
  874. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +1 -2
  875. data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -2
  876. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +15 -14
  877. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +1 -2
  878. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +3 -4
  879. data/src/core/tsi/ssl_transport_security.cc +96 -100
  880. data/src/core/tsi/ssl_transport_security.h +1 -2
  881. data/src/core/tsi/ssl_transport_security_utils.cc +85 -28
  882. data/src/core/tsi/ssl_transport_security_utils.h +12 -2
  883. data/src/core/tsi/ssl_types.h +2 -2
  884. data/src/core/tsi/transport_security.cc +1 -6
  885. data/src/core/tsi/transport_security.h +2 -4
  886. data/src/core/tsi/transport_security_grpc.cc +2 -2
  887. data/src/core/tsi/transport_security_grpc.h +1 -2
  888. data/src/core/tsi/transport_security_interface.h +2 -6
  889. data/src/core/{lib/gpr → util}/alloc.cc +3 -1
  890. data/src/core/{lib/gpr → util}/alloc.h +3 -3
  891. data/src/core/{lib/gpr → util}/android/log.cc +0 -19
  892. data/src/core/{lib/gpr → util}/atm.cc +1 -1
  893. data/src/core/{ext/gcp/metadata_query.cc → util/gcp_metadata_query.cc} +26 -26
  894. data/src/core/{ext/gcp/metadata_query.h → util/gcp_metadata_query.h} +9 -9
  895. data/src/core/{lib/http → util/http_client}/format_request.cc +2 -2
  896. data/src/core/{lib/http → util/http_client}/format_request.h +4 -4
  897. data/src/core/{lib/http → util/http_client}/httpcli.cc +12 -13
  898. data/src/core/{lib/http → util/http_client}/httpcli.h +5 -5
  899. data/src/core/{lib/http → util/http_client}/httpcli_security_connector.cc +10 -10
  900. data/src/core/{lib/http → util/http_client}/httpcli_ssl_credentials.h +3 -3
  901. data/src/core/{lib/http → util/http_client}/parser.cc +6 -7
  902. data/src/core/{lib/http → util/http_client}/parser.h +3 -5
  903. data/src/core/{lib → util}/json/json.h +3 -3
  904. data/src/core/{lib → util}/json/json_args.h +3 -3
  905. data/src/core/{lib → util}/json/json_channel_args.h +4 -4
  906. data/src/core/{lib → util}/json/json_object_loader.cc +1 -1
  907. data/src/core/{lib → util}/json/json_object_loader.h +5 -5
  908. data/src/core/{lib → util}/json/json_reader.cc +4 -3
  909. data/src/core/{lib → util}/json/json_reader.h +4 -4
  910. data/src/core/{lib → util}/json/json_util.cc +3 -3
  911. data/src/core/{lib → util}/json/json_util.h +4 -4
  912. data/src/core/{lib → util}/json/json_writer.cc +1 -1
  913. data/src/core/{lib → util}/json/json_writer.h +4 -4
  914. data/src/core/{lib/gpr → util}/linux/log.cc +0 -45
  915. data/src/core/util/log.cc +167 -0
  916. data/src/core/{lib/gpr → util}/msys/tmpfile.cc +2 -2
  917. data/src/core/{lib/gpr → util}/posix/cpu.cc +1 -1
  918. data/src/core/{lib/gpr → util}/posix/log.cc +0 -42
  919. data/src/core/{lib/gpr → util}/posix/sync.cc +25 -23
  920. data/src/core/{lib/gpr → util}/posix/time.cc +10 -7
  921. data/src/core/{lib/gpr → util}/posix/tmpfile.cc +5 -3
  922. data/src/core/{lib/gpr → util}/spinlock.h +3 -3
  923. data/src/core/{lib/gpr → util}/string.cc +2 -2
  924. data/src/core/{lib/gpr → util}/string.h +3 -3
  925. data/src/core/{lib/gpr → util}/sync.cc +5 -3
  926. data/src/core/{lib/gpr → util}/time.cc +10 -8
  927. data/src/core/{lib/gpr → util}/time_precise.cc +1 -1
  928. data/src/core/{lib/gpr → util}/time_precise.h +3 -3
  929. data/src/core/{lib/gpr → util}/tmpfile.h +3 -3
  930. data/src/core/{lib/gpr → util}/useful.h +3 -3
  931. data/src/core/{lib/gpr → util}/windows/log.cc +1 -44
  932. data/src/core/{lib/gpr → util}/windows/string.cc +1 -1
  933. data/src/core/{lib/gpr → util}/windows/string_util.cc +1 -1
  934. data/src/core/{lib/gpr → util}/windows/sync.cc +3 -1
  935. data/src/core/{lib/gpr → util}/windows/time.cc +5 -2
  936. data/src/core/{lib/gpr → util}/windows/tmpfile.cc +1 -1
  937. data/src/core/{ext/xds → xds/grpc}/certificate_provider_store.cc +5 -6
  938. data/src/core/{ext/xds → xds/grpc}/certificate_provider_store.h +8 -9
  939. data/src/core/{ext/xds → xds/grpc}/file_watcher_certificate_provider_factory.cc +5 -6
  940. data/src/core/{ext/xds → xds/grpc}/file_watcher_certificate_provider_factory.h +7 -8
  941. data/src/core/{ext/xds → xds/grpc}/upb_utils.h +5 -5
  942. data/src/core/{ext/xds → xds/grpc}/xds_audit_logger_registry.cc +4 -4
  943. data/src/core/{ext/xds → xds/grpc}/xds_audit_logger_registry.h +7 -7
  944. data/src/core/{ext/xds → xds/grpc}/xds_bootstrap_grpc.cc +7 -8
  945. data/src/core/{ext/xds → xds/grpc}/xds_bootstrap_grpc.h +14 -14
  946. data/src/core/{ext/xds → xds/grpc}/xds_certificate_provider.cc +5 -5
  947. data/src/core/{ext/xds → xds/grpc}/xds_certificate_provider.h +5 -6
  948. data/src/core/{ext/xds → xds/grpc}/xds_client_grpc.cc +51 -34
  949. data/src/core/{ext/xds → xds/grpc}/xds_client_grpc.h +10 -11
  950. data/src/core/{ext/xds → xds/grpc}/xds_cluster.cc +22 -14
  951. data/src/core/{ext/xds → xds/grpc}/xds_cluster.h +12 -13
  952. data/src/core/{ext/xds → xds/grpc}/xds_cluster_specifier_plugin.cc +6 -6
  953. data/src/core/{ext/xds → xds/grpc}/xds_cluster_specifier_plugin.h +7 -7
  954. data/src/core/{ext/xds → xds/grpc}/xds_common_types.cc +6 -7
  955. data/src/core/{ext/xds → xds/grpc}/xds_common_types.h +7 -7
  956. data/src/core/{ext/xds → xds/grpc}/xds_endpoint.cc +11 -12
  957. data/src/core/{ext/xds → xds/grpc}/xds_endpoint.h +9 -9
  958. data/src/core/{ext/xds → xds/grpc}/xds_health_status.cc +3 -3
  959. data/src/core/{ext/xds → xds/grpc}/xds_health_status.h +5 -5
  960. data/src/core/{ext/xds → xds/grpc}/xds_http_fault_filter.cc +6 -7
  961. data/src/core/{ext/xds → xds/grpc}/xds_http_fault_filter.h +8 -8
  962. data/src/core/{ext/xds → xds/grpc}/xds_http_filters.cc +8 -9
  963. data/src/core/{ext/xds → xds/grpc}/xds_http_filters.h +9 -9
  964. data/src/core/{ext/xds → xds/grpc}/xds_http_rbac_filter.cc +9 -10
  965. data/src/core/{ext/xds → xds/grpc}/xds_http_rbac_filter.h +8 -8
  966. data/src/core/{ext/xds → xds/grpc}/xds_http_stateful_session_filter.cc +7 -8
  967. data/src/core/{ext/xds → xds/grpc}/xds_http_stateful_session_filter.h +8 -8
  968. data/src/core/{ext/xds → xds/grpc}/xds_lb_policy_registry.cc +3 -4
  969. data/src/core/{ext/xds → xds/grpc}/xds_lb_policy_registry.h +7 -7
  970. data/src/core/{ext/xds → xds/grpc}/xds_listener.cc +12 -14
  971. data/src/core/{ext/xds → xds/grpc}/xds_listener.h +12 -12
  972. data/src/core/{ext/xds → xds/grpc}/xds_route_config.cc +23 -24
  973. data/src/core/{ext/xds → xds/grpc}/xds_route_config.h +11 -11
  974. data/src/core/{ext/xds → xds/grpc}/xds_routing.cc +6 -6
  975. data/src/core/{ext/xds → xds/grpc}/xds_routing.h +8 -8
  976. data/src/core/{ext/xds → xds/grpc}/xds_transport_grpc.cc +16 -16
  977. data/src/core/{ext/xds → xds/grpc}/xds_transport_grpc.h +7 -8
  978. data/src/core/{ext/xds → xds/xds_client}/xds_api.cc +9 -14
  979. data/src/core/{ext/xds → xds/xds_client}/xds_api.h +7 -7
  980. data/src/core/{ext/xds → xds/xds_client}/xds_bootstrap.cc +4 -4
  981. data/src/core/{ext/xds → xds/xds_client}/xds_bootstrap.h +6 -6
  982. data/src/core/{ext/xds → xds/xds_client}/xds_channel_args.h +3 -3
  983. data/src/core/{ext/xds → xds/xds_client}/xds_client.cc +60 -62
  984. data/src/core/{ext/xds → xds/xds_client}/xds_client.h +10 -14
  985. data/src/core/{ext/xds → xds/xds_client}/xds_client_stats.cc +23 -22
  986. data/src/core/{ext/xds → xds/xds_client}/xds_client_stats.h +8 -8
  987. data/src/core/{ext/xds → xds/xds_client}/xds_metrics.h +7 -5
  988. data/src/core/{ext/xds → xds/xds_client}/xds_resource_type.h +6 -6
  989. data/src/core/{ext/xds → xds/xds_client}/xds_resource_type_impl.h +7 -7
  990. data/src/core/{ext/xds → xds/xds_client}/xds_transport.h +6 -6
  991. data/src/ruby/bin/math_pb.rb +1 -22
  992. data/src/ruby/ext/grpc/rb_call.c +8 -1
  993. data/src/ruby/ext/grpc/rb_call_credentials.c +1 -0
  994. data/src/ruby/ext/grpc/rb_call_credentials.h +1 -0
  995. data/src/ruby/ext/grpc/rb_channel.c +1 -0
  996. data/src/ruby/ext/grpc/rb_channel_credentials.c +1 -0
  997. data/src/ruby/ext/grpc/rb_completion_queue.c +15 -32
  998. data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
  999. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +130 -130
  1000. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +198 -197
  1001. data/src/ruby/ext/grpc/rb_server.c +40 -22
  1002. data/src/ruby/ext/grpc/rb_server_credentials.c +1 -0
  1003. data/src/ruby/ext/grpc/rb_server_credentials.h +1 -0
  1004. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +1 -0
  1005. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +1 -0
  1006. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +1 -0
  1007. data/src/ruby/lib/grpc/version.rb +1 -1
  1008. data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
  1009. data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
  1010. data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
  1011. data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
  1012. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
  1013. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
  1014. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
  1015. data/third_party/abseil-cpp/absl/log/check.h +209 -0
  1016. data/third_party/abseil-cpp/absl/log/internal/check_impl.h +150 -0
  1017. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +118 -0
  1018. data/third_party/abseil-cpp/absl/log/internal/check_op.h +420 -0
  1019. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +4 -0
  1020. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +13 -18
  1021. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +25 -10
  1022. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +3 -18
  1023. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c +3 -2
  1024. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +1 -1
  1025. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +19 -15
  1026. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +7 -0
  1027. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_des.c +48 -66
  1028. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +7 -3
  1029. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +20 -28
  1030. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +9 -4
  1031. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +2 -2
  1032. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +66 -41
  1033. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c +4 -1
  1034. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.c +0 -15
  1035. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +7 -61
  1036. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +7 -7
  1037. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +1 -0
  1038. data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +1539 -0
  1039. data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +58 -0
  1040. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +36 -20
  1041. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +3 -4
  1042. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +2 -0
  1043. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +81 -60
  1044. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +41 -120
  1045. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +13 -13
  1046. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +7 -0
  1047. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c +137 -0
  1048. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c +120 -0
  1049. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +30 -0
  1050. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +3 -4
  1051. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +30 -0
  1052. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +1 -4
  1053. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +30 -0
  1054. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +1 -4
  1055. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +6 -7
  1056. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +21 -0
  1057. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +31 -7
  1058. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -2
  1059. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +1 -1
  1060. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +3 -3
  1061. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
  1062. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +46 -2
  1063. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +8 -5
  1064. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +33 -23
  1065. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +1 -1
  1066. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +2 -2
  1067. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +14 -7
  1068. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +2 -1
  1069. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +0 -3
  1070. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +11 -7
  1071. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +5 -0
  1072. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +5 -1
  1073. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +3 -6
  1074. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +2 -1
  1075. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +11 -11
  1076. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +22 -8
  1077. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +6 -4
  1078. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +3 -6
  1079. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +78 -29
  1080. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +4 -4
  1081. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +3 -3
  1082. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -4
  1083. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +7 -0
  1084. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -0
  1085. data/third_party/boringssl-with-bazel/src/crypto/internal.h +62 -27
  1086. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +1 -1
  1087. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +2 -1
  1088. data/third_party/boringssl-with-bazel/src/crypto/mem.c +18 -9
  1089. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -17
  1090. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +44 -41
  1091. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +13 -12
  1092. data/third_party/boringssl-with-bazel/src/crypto/spx/spx.c +7 -6
  1093. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +26 -33
  1094. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +1 -1
  1095. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +4 -5
  1096. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
  1097. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c +9 -4
  1098. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c +2 -2
  1099. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c +1 -1
  1100. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c +2 -0
  1101. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +49 -16
  1102. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -10
  1103. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +21 -25
  1104. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +8 -25
  1105. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +2 -2
  1106. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +1 -6
  1107. data/third_party/boringssl-with-bazel/{err_data.c → src/gen/crypto/err_data.c} +487 -485
  1108. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -1
  1109. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +85 -42
  1110. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +12 -4
  1111. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +10 -11
  1112. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +17 -1
  1113. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -3
  1114. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +13 -0
  1115. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +25 -14
  1116. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +1 -0
  1117. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +15 -3
  1118. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +131 -0
  1119. data/third_party/boringssl-with-bazel/src/include/openssl/{kyber.h → experimental/kyber.h} +10 -0
  1120. data/third_party/boringssl-with-bazel/src/{crypto/spx/internal.h → include/openssl/experimental/spx.h} +24 -13
  1121. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +2 -2
  1122. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +63 -53
  1123. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +19 -10
  1124. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +26 -12
  1125. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +358 -102
  1126. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +10 -3
  1127. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +13 -10
  1128. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +2 -2
  1129. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +2931 -2453
  1130. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -8
  1131. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +4 -4
  1132. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +1 -1
  1133. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +19 -18
  1134. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +3 -9
  1135. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +64 -58
  1136. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +1 -1
  1137. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +17 -7
  1138. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +69 -16
  1139. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +145 -114
  1140. data/third_party/boringssl-with-bazel/src/ssl/internal.h +243 -189
  1141. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +1 -1
  1142. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
  1143. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +59 -385
  1144. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +21 -19
  1145. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +423 -0
  1146. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +2 -2
  1147. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +2 -1
  1148. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +108 -81
  1149. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +116 -93
  1150. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +6 -14
  1151. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +1 -1
  1152. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +48 -116
  1153. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +21 -27
  1154. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +36 -3
  1155. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +53 -18
  1156. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +1 -1
  1157. metadata +207 -196
  1158. data/src/core/client_channel/client_channel_channelz.cc +0 -93
  1159. data/src/core/client_channel/client_channel_channelz.h +0 -85
  1160. data/src/core/ext/filters/deadline/deadline_filter.cc +0 -407
  1161. data/src/core/ext/filters/deadline/deadline_filter.h +0 -85
  1162. data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
  1163. data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
  1164. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
  1165. data/src/core/lib/channel/channel_stack_trace.cc +0 -19
  1166. data/src/core/lib/channel/channel_stack_trace.h +0 -24
  1167. data/src/core/lib/channel/context.h +0 -77
  1168. data/src/core/lib/channel/metrics.cc +0 -396
  1169. data/src/core/lib/channel/metrics.h +0 -406
  1170. data/src/core/lib/event_engine/trace.cc +0 -25
  1171. data/src/core/lib/gpr/log.cc +0 -166
  1172. data/src/core/lib/gpr/log_internal.h +0 -55
  1173. data/src/core/lib/iomgr/ev_windows.cc +0 -30
  1174. data/src/core/lib/promise/trace.cc +0 -20
  1175. data/src/core/lib/promise/trace.h +0 -24
  1176. data/src/core/lib/resource_quota/trace.cc +0 -19
  1177. data/src/core/lib/resource_quota/trace.h +0 -24
  1178. data/src/core/lib/security/transport/tsi_error.cc +0 -31
  1179. data/src/core/lib/security/transport/tsi_error.h +0 -30
  1180. data/src/core/lib/slice/slice_refcount.cc +0 -20
  1181. data/src/core/lib/surface/api_trace.cc +0 -25
  1182. data/src/core/lib/surface/call_trace.h +0 -24
  1183. data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
  1184. data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
  1185. data/src/core/lib/transport/batch_builder.cc +0 -170
  1186. data/src/core/lib/transport/batch_builder.h +0 -476
  1187. data/src/core/resolver/xds/xds_resolver_trace.cc +0 -25
  1188. data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
  1189. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
  1190. data/third_party/boringssl-with-bazel/src/include/openssl/pki/certificate.h +0 -83
  1191. data/third_party/boringssl-with-bazel/src/include/openssl/pki/signature_verify_cache.h +0 -41
  1192. /data/src/core/{lib/gpr → util}/iphone/cpu.cc +0 -0
  1193. /data/src/core/{lib/gpr → util}/linux/cpu.cc +0 -0
  1194. /data/src/core/{lib/gpr → util}/posix/string.cc +0 -0
  1195. /data/src/core/{lib/gpr → util}/sync_abseil.cc +0 -0
  1196. /data/src/core/{lib/gpr → util}/windows/cpu.cc +0 -0
@@ -550,8 +550,8 @@ OPENSSL_EXPORT int SSL_get_error(const SSL *ssl, int ret_code);
550
550
  // a private key operation was unfinished. The caller may retry the operation
551
551
  // when the private key operation is complete.
552
552
  //
553
- // See also |SSL_set_private_key_method| and
554
- // |SSL_CTX_set_private_key_method|.
553
+ // See also |SSL_set_private_key_method|, |SSL_CTX_set_private_key_method|, and
554
+ // |SSL_CREDENTIAL_set_private_key_method|.
555
555
  #define SSL_ERROR_WANT_PRIVATE_KEY_OPERATION 13
556
556
 
557
557
  // SSL_ERROR_PENDING_TICKET indicates that a ticket decryption is pending. The
@@ -841,6 +841,142 @@ OPENSSL_EXPORT void SSL_CTX_set0_buffer_pool(SSL_CTX *ctx,
841
841
  CRYPTO_BUFFER_POOL *pool);
842
842
 
843
843
 
844
+ // Credentials.
845
+ //
846
+ // TLS endpoints may present authentication during the handshake, usually using
847
+ // X.509 certificates. This is typically required for servers and optional for
848
+ // clients. BoringSSL uses the |SSL_CREDENTIAL| object to abstract between
849
+ // different kinds of credentials, as well as configure automatic selection
850
+ // between multiple credentials. This may be used to select between ECDSA and
851
+ // RSA certificates.
852
+ //
853
+ // |SSL_CTX| and |SSL| objects maintain lists of credentials in preference
854
+ // order. During the handshake, BoringSSL will select the first usable
855
+ // credential from the list. Non-credential APIs, such as
856
+ // |SSL_CTX_use_certificate|, configure a "default credential", which is
857
+ // appended to this list if configured.
858
+ //
859
+ // When selecting credentials, BoringSSL considers the credential's type, its
860
+ // cryptographic capabilities, and capabilities advertised by the peer. This
861
+ // varies between TLS versions but includes:
862
+ //
863
+ // - Whether the peer supports the leaf certificate key
864
+ // - Whether there is a common signature algorithm that is compatible with the
865
+ // credential
866
+ // - Whether there is a common cipher suite that is compatible with the
867
+ // credential
868
+ //
869
+ // WARNING: In TLS 1.2 and below, there is no mechanism for servers to advertise
870
+ // supported ECDSA curves to the client. BoringSSL clients will assume the
871
+ // server accepts all ECDSA curves in client certificates.
872
+ //
873
+ // By default, BoringSSL does not check the following, though we may add APIs
874
+ // in the future to enable them on a per-credential basis.
875
+ //
876
+ // - Whether the peer supports the signature algorithms in the certificate chain
877
+ // - Whether the a server certificate is compatible with the server_name
878
+ // extension (SNI)
879
+ // - Whether the peer supports the certificate authority that issued the
880
+ // certificate
881
+ //
882
+ // Credentials may be configured before the handshake or dynamically in the
883
+ // early callback (see |SSL_CTX_set_select_certificate_cb|) and certificate
884
+ // callback (see |SSL_CTX_set_cert_cb|). These callbacks allow applications to
885
+ // use BoringSSL's built-in selection logic in tandem with custom logic. For
886
+ // example, a callback could evaluate application-specific SNI rules to filter
887
+ // down to an ECDSA and RSA credential, then configure both for BoringSSL to
888
+ // select between the two.
889
+
890
+ // SSL_CREDENTIAL_new_x509 returns a new, empty X.509 credential, or NULL on
891
+ // error. Callers should release the result with |SSL_CREDENTIAL_free| when
892
+ // done.
893
+ //
894
+ // Callers should configure a certificate chain and private key on the
895
+ // credential, along with other properties, then add it with
896
+ // |SSL_CTX_add1_credential|.
897
+ OPENSSL_EXPORT SSL_CREDENTIAL *SSL_CREDENTIAL_new_x509(void);
898
+
899
+ // SSL_CREDENTIAL_up_ref increments the reference count of |cred|.
900
+ OPENSSL_EXPORT void SSL_CREDENTIAL_up_ref(SSL_CREDENTIAL *cred);
901
+
902
+ // SSL_CREDENTIAL_free decrements the reference count of |cred|. If it reaches
903
+ // zero, all data referenced by |cred| and |cred| itself are released.
904
+ OPENSSL_EXPORT void SSL_CREDENTIAL_free(SSL_CREDENTIAL *cred);
905
+
906
+ // SSL_CREDENTIAL_set1_private_key sets |cred|'s private key to |cred|. It
907
+ // returns one on success and zero on failure.
908
+ OPENSSL_EXPORT int SSL_CREDENTIAL_set1_private_key(SSL_CREDENTIAL *cred,
909
+ EVP_PKEY *key);
910
+
911
+ // SSL_CREDENTIAL_set1_signing_algorithm_prefs configures |cred| to use |prefs|
912
+ // as the preference list when signing with |cred|'s private key. It returns one
913
+ // on success and zero on error. |prefs| should not include the internal-only
914
+ // value |SSL_SIGN_RSA_PKCS1_MD5_SHA1|.
915
+ //
916
+ // It is an error to call this function with delegated credentials (see
917
+ // |SSL_CREDENTIAL_new_delegated|) because delegated credentials already
918
+ // constrain the key to a single algorithm.
919
+ OPENSSL_EXPORT int SSL_CREDENTIAL_set1_signing_algorithm_prefs(
920
+ SSL_CREDENTIAL *cred, const uint16_t *prefs, size_t num_prefs);
921
+
922
+ // SSL_CREDENTIAL_set1_cert_chain sets |cred|'s certificate chain, starting from
923
+ // the leaf, to |num_cert|s certificates from |certs|. It returns one on success
924
+ // and zero on error.
925
+ OPENSSL_EXPORT int SSL_CREDENTIAL_set1_cert_chain(SSL_CREDENTIAL *cred,
926
+ CRYPTO_BUFFER *const *certs,
927
+ size_t num_certs);
928
+
929
+ // SSL_CREDENTIAL_set1_ocsp_response sets |cred|'s stapled OCSP response to
930
+ // |ocsp|. It returns one on success and zero on error.
931
+ OPENSSL_EXPORT int SSL_CREDENTIAL_set1_ocsp_response(SSL_CREDENTIAL *cred,
932
+ CRYPTO_BUFFER *ocsp);
933
+
934
+ // SSL_CREDENTIAL_set1_signed_cert_timestamp_list sets |cred|'s list of signed
935
+ // certificate timestamps |sct_list|. |sct_list| must contain one or more SCT
936
+ // structures serialised as a SignedCertificateTimestampList (see
937
+ // https://tools.ietf.org/html/rfc6962#section-3.3) – i.e. each SCT is prefixed
938
+ // by a big-endian, uint16 length and the concatenation of one or more such
939
+ // prefixed SCTs are themselves also prefixed by a uint16 length. It returns one
940
+ // on success and zero on error.
941
+ OPENSSL_EXPORT int SSL_CREDENTIAL_set1_signed_cert_timestamp_list(
942
+ SSL_CREDENTIAL *cred, CRYPTO_BUFFER *sct_list);
943
+
944
+ // SSL_CTX_add1_credential appends |cred| to |ctx|'s credential list. It returns
945
+ // one on success and zero on error. The credential list is maintained in order
946
+ // of decreasing preference, so earlier calls are preferred over later calls.
947
+ //
948
+ // After calling this function, it is an error to modify |cred|. Doing so may
949
+ // result in inconsistent handshake behavior or race conditions.
950
+ OPENSSL_EXPORT int SSL_CTX_add1_credential(SSL_CTX *ctx, SSL_CREDENTIAL *cred);
951
+
952
+ // SSL_add1_credential appends |cred| to |ssl|'s credential list. It returns one
953
+ // on success and zero on error. The credential list is maintained in order of
954
+ // decreasing preference, so earlier calls are preferred over later calls.
955
+ //
956
+ // After calling this function, it is an error to modify |cred|. Doing so may
957
+ // result in inconsistent handshake behavior or race conditions.
958
+ OPENSSL_EXPORT int SSL_add1_credential(SSL *ssl, SSL_CREDENTIAL *cred);
959
+
960
+ // SSL_certs_clear removes all credentials configured on |ssl|. It also removes
961
+ // the certificate chain and private key on the default credential.
962
+ OPENSSL_EXPORT void SSL_certs_clear(SSL *ssl);
963
+
964
+ // SSL_get0_selected_credential returns the credential in use in the current
965
+ // handshake on |ssl|. If there is current handshake on |ssl| or if the
966
+ // handshake has not progressed to this point, it returns NULL.
967
+ //
968
+ // This function is intended for use with |SSL_CREDENTIAL_get_ex_data|. It may
969
+ // be called from handshake callbacks, such as those in
970
+ // |SSL_PRIVATE_KEY_METHOD|, to trigger credential-specific behavior.
971
+ //
972
+ // In applications that use the older APIs, such as |SSL_use_certificate|, this
973
+ // function may return an internal |SSL_CREDENTIAL| object. This internal object
974
+ // will have no ex_data installed. To avoid this, it is recommended that callers
975
+ // moving to |SSL_CREDENTIAL| use the new APIs consistently.
976
+ OPENSSL_EXPORT const SSL_CREDENTIAL *SSL_get0_selected_credential(
977
+ const SSL *ssl);
978
+
979
+
844
980
  // Configuring certificates and private keys.
845
981
  //
846
982
  // These functions configure the connection's leaf certificate, private key, and
@@ -848,23 +984,32 @@ OPENSSL_EXPORT void SSL_CTX_set0_buffer_pool(SSL_CTX *ctx,
848
984
  // the wire) but does not include the leaf. Both client and server certificates
849
985
  // use these functions.
850
986
  //
851
- // Certificates and keys may be configured before the handshake or dynamically
852
- // in the early callback and certificate callback.
987
+ // Prefer to configure the certificate before the private key. If configured in
988
+ // the other order, inconsistent private keys will be silently dropped, rather
989
+ // than return an error. Additionally, overwriting a previously-configured
990
+ // certificate and key pair only works if the certificate is configured first.
991
+ //
992
+ // Each of these functions configures the default credential. To select between
993
+ // multiple certificates, see |SSL_CREDENTIAL_new_x509| and related APIs.
853
994
 
854
995
  // SSL_CTX_use_certificate sets |ctx|'s leaf certificate to |x509|. It returns
855
- // one on success and zero on failure.
996
+ // one on success and zero on failure. If |ctx| has a private key which is
997
+ // inconsistent with |x509|, the private key is silently dropped.
856
998
  OPENSSL_EXPORT int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x509);
857
999
 
858
1000
  // SSL_use_certificate sets |ssl|'s leaf certificate to |x509|. It returns one
859
- // on success and zero on failure.
1001
+ // on success and zero on failure. If |ssl| has a private key which is
1002
+ // inconsistent with |x509|, the private key is silently dropped.
860
1003
  OPENSSL_EXPORT int SSL_use_certificate(SSL *ssl, X509 *x509);
861
1004
 
862
1005
  // SSL_CTX_use_PrivateKey sets |ctx|'s private key to |pkey|. It returns one on
863
- // success and zero on failure.
1006
+ // success and zero on failure. If |ctx| had a private key or
1007
+ // |SSL_PRIVATE_KEY_METHOD| previously configured, it is replaced.
864
1008
  OPENSSL_EXPORT int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey);
865
1009
 
866
1010
  // SSL_use_PrivateKey sets |ssl|'s private key to |pkey|. It returns one on
867
- // success and zero on failure.
1011
+ // success and zero on failure. If |ssl| had a private key or
1012
+ // |SSL_PRIVATE_KEY_METHOD| previously configured, it is replaced.
868
1013
  OPENSSL_EXPORT int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey);
869
1014
 
870
1015
  // SSL_CTX_set0_chain sets |ctx|'s certificate chain, excluding the leaf, to
@@ -986,18 +1131,6 @@ OPENSSL_EXPORT size_t
986
1131
  SSL_get0_peer_delegation_algorithms(const SSL *ssl,
987
1132
  const uint16_t **out_sigalgs);
988
1133
 
989
- // SSL_certs_clear resets the private key, leaf certificate, and certificate
990
- // chain of |ssl|.
991
- OPENSSL_EXPORT void SSL_certs_clear(SSL *ssl);
992
-
993
- // SSL_CTX_check_private_key returns one if the certificate and private key
994
- // configured in |ctx| are consistent and zero otherwise.
995
- OPENSSL_EXPORT int SSL_CTX_check_private_key(const SSL_CTX *ctx);
996
-
997
- // SSL_check_private_key returns one if the certificate and private key
998
- // configured in |ssl| are consistent and zero otherwise.
999
- OPENSSL_EXPORT int SSL_check_private_key(const SSL *ssl);
1000
-
1001
1134
  // SSL_CTX_get0_certificate returns |ctx|'s leaf certificate.
1002
1135
  OPENSSL_EXPORT X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx);
1003
1136
 
@@ -1072,6 +1205,11 @@ OPENSSL_EXPORT int SSL_set_ocsp_response(SSL *ssl,
1072
1205
  #define SSL_SIGN_RSA_PSS_RSAE_SHA512 0x0806
1073
1206
  #define SSL_SIGN_ED25519 0x0807
1074
1207
 
1208
+ // SSL_SIGN_RSA_PKCS1_SHA256_LEGACY is a backport of RSASSA-PKCS1-v1_5 with
1209
+ // SHA-256 to TLS 1.3. It is disabled by default and only defined for client
1210
+ // certificates.
1211
+ #define SSL_SIGN_RSA_PKCS1_SHA256_LEGACY 0x0420
1212
+
1075
1213
  // SSL_SIGN_RSA_PKCS1_MD5_SHA1 is an internal signature algorithm used to
1076
1214
  // specify raw RSASSA-PKCS1-v1_5 with an MD5/SHA-1 concatenation, as used in TLS
1077
1215
  // before TLS 1.2.
@@ -1229,6 +1367,11 @@ OPENSSL_EXPORT int SSL_use_PrivateKey_file(SSL *ssl, const char *file,
1229
1367
  // reads the contents of |file| as a PEM-encoded leaf certificate followed
1230
1368
  // optionally by the certificate chain to send to the peer. It returns one on
1231
1369
  // success and zero on failure.
1370
+ //
1371
+ // WARNING: If the input contains "TRUSTED CERTIFICATE" PEM blocks, this
1372
+ // function parses auxiliary properties as in |d2i_X509_AUX|. Passing untrusted
1373
+ // input to this function allows an attacker to influence those properties. See
1374
+ // |d2i_X509_AUX| for details.
1232
1375
  OPENSSL_EXPORT int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx,
1233
1376
  const char *file);
1234
1377
 
@@ -1264,11 +1407,6 @@ enum ssl_private_key_result_t BORINGSSL_ENUM_INT {
1264
1407
  // key hooks. This is used to off-load signing operations to a custom,
1265
1408
  // potentially asynchronous, backend. Metadata about the key such as the type
1266
1409
  // and size are parsed out of the certificate.
1267
- //
1268
- // Callers that use this structure should additionally call
1269
- // |SSL_set_signing_algorithm_prefs| or |SSL_CTX_set_signing_algorithm_prefs|
1270
- // with the private key's capabilities. This ensures BoringSSL will select a
1271
- // suitable signature algorithm for the private key.
1272
1410
  struct ssl_private_key_method_st {
1273
1411
  // sign signs the message |in| in using the specified signature algorithm. On
1274
1412
  // success, it returns |ssl_private_key_success| and writes at most |max_out|
@@ -1321,14 +1459,39 @@ struct ssl_private_key_method_st {
1321
1459
 
1322
1460
  // SSL_set_private_key_method configures a custom private key on |ssl|.
1323
1461
  // |key_method| must remain valid for the lifetime of |ssl|.
1462
+ //
1463
+ // If using an RSA or ECDSA key, callers should configure signing capabilities
1464
+ // with |SSL_set_signing_algorithm_prefs|. Otherwise, BoringSSL may select a
1465
+ // signature algorithm that |key_method| does not support.
1324
1466
  OPENSSL_EXPORT void SSL_set_private_key_method(
1325
1467
  SSL *ssl, const SSL_PRIVATE_KEY_METHOD *key_method);
1326
1468
 
1327
1469
  // SSL_CTX_set_private_key_method configures a custom private key on |ctx|.
1328
1470
  // |key_method| must remain valid for the lifetime of |ctx|.
1471
+ //
1472
+ // If using an RSA or ECDSA key, callers should configure signing capabilities
1473
+ // with |SSL_CTX_set_signing_algorithm_prefs|. Otherwise, BoringSSL may select a
1474
+ // signature algorithm that |key_method| does not support.
1329
1475
  OPENSSL_EXPORT void SSL_CTX_set_private_key_method(
1330
1476
  SSL_CTX *ctx, const SSL_PRIVATE_KEY_METHOD *key_method);
1331
1477
 
1478
+ // SSL_CREDENTIAL_set_private_key_method configures a custom private key on
1479
+ // |cred|. |key_method| must remain valid for the lifetime of |cred|. It returns
1480
+ // one on success and zero if |cred| does not use private keys.
1481
+ //
1482
+ // If using an RSA or ECDSA key, callers should configure signing capabilities
1483
+ // with |SSL_CREDENTIAL_set1_signing_algorithm_prefs|. Otherwise, BoringSSL may
1484
+ // select a signature algorithm that |key_method| does not support. This is not
1485
+ // necessary for delegated credentials (see |SSL_CREDENTIAL_new_delegated|)
1486
+ // because delegated credentials only support a single signature algorithm.
1487
+ //
1488
+ // Functions in |key_method| will be passed an |SSL| object, but not |cred|
1489
+ // directly. Use |SSL_get0_selected_credential| to determine the selected
1490
+ // credential. From there, |SSL_CREDENTIAL_get_ex_data| can be used to look up
1491
+ // credential-specific state, such as a handle to the private key.
1492
+ OPENSSL_EXPORT int SSL_CREDENTIAL_set_private_key_method(
1493
+ SSL_CREDENTIAL *cred, const SSL_PRIVATE_KEY_METHOD *key_method);
1494
+
1332
1495
  // SSL_can_release_private_key returns one if |ssl| will no longer call into the
1333
1496
  // private key and zero otherwise. If the function returns one, the caller can
1334
1497
  // release state associated with the private key.
@@ -2674,19 +2837,17 @@ OPENSSL_EXPORT void SSL_CTX_set_cert_store(SSL_CTX *ctx, X509_STORE *store);
2674
2837
  // SSL_CTX_get_cert_store returns |ctx|'s certificate store.
2675
2838
  OPENSSL_EXPORT X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *ctx);
2676
2839
 
2677
- // SSL_CTX_set_default_verify_paths loads the OpenSSL system-default trust
2678
- // anchors into |ctx|'s store. It returns one on success and zero on failure.
2840
+ // SSL_CTX_set_default_verify_paths calls |X509_STORE_set_default_paths| on
2841
+ // |ctx|'s store. See that function for details.
2842
+ //
2843
+ // Using this function is not recommended. In OpenSSL, these defaults are
2844
+ // determined by OpenSSL's install prefix. There is no corresponding concept for
2845
+ // BoringSSL. Future versions of BoringSSL may change or remove this
2846
+ // functionality.
2679
2847
  OPENSSL_EXPORT int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx);
2680
2848
 
2681
- // SSL_CTX_load_verify_locations loads trust anchors into |ctx|'s store from
2682
- // |ca_file| and |ca_dir|, either of which may be NULL. If |ca_file| is passed,
2683
- // it is opened and PEM-encoded CA certificates are read. If |ca_dir| is passed,
2684
- // it is treated as a directory in OpenSSL's hashed directory format. It returns
2685
- // one on success and zero on failure.
2686
- //
2687
- // See
2688
- // https://www.openssl.org/docs/man1.1.0/man3/SSL_CTX_load_verify_locations.html
2689
- // for documentation on the directory format.
2849
+ // SSL_CTX_load_verify_locations calls |X509_STORE_load_locations| on |ctx|'s
2850
+ // store. See that function for details.
2690
2851
  OPENSSL_EXPORT int SSL_CTX_load_verify_locations(SSL_CTX *ctx,
2691
2852
  const char *ca_file,
2692
2853
  const char *ca_dir);
@@ -2959,7 +3120,8 @@ OPENSSL_EXPORT int SSL_set_alpn_protos(SSL *ssl, const uint8_t *protos,
2959
3120
 
2960
3121
  // SSL_CTX_set_alpn_select_cb sets a callback function on |ctx| that is called
2961
3122
  // during ClientHello processing in order to select an ALPN protocol from the
2962
- // client's list of offered protocols.
3123
+ // client's list of offered protocols. |SSL_select_next_proto| is an optional
3124
+ // utility function which may be useful in implementing this callback.
2963
3125
  //
2964
3126
  // The callback is passed a wire-format (i.e. a series of non-empty, 8-bit
2965
3127
  // length-prefixed strings) ALPN protocol list in |in|. To select a protocol,
@@ -3109,30 +3271,50 @@ OPENSSL_EXPORT int SSL_CTX_add_cert_compression_alg(
3109
3271
  // and deprecated in favor of it.
3110
3272
 
3111
3273
  // SSL_CTX_set_next_protos_advertised_cb sets a callback that is called when a
3112
- // TLS server needs a list of supported protocols for Next Protocol
3113
- // Negotiation. The returned list must be in wire format. The list is returned
3114
- // by setting |*out| to point to it and |*out_len| to its length. This memory
3115
- // will not be modified, but one should assume that |ssl| keeps a reference to
3116
- // it.
3117
- //
3118
- // The callback should return |SSL_TLSEXT_ERR_OK| if it wishes to advertise.
3119
- // Otherwise, no such extension will be included in the ServerHello.
3274
+ // TLS server needs a list of supported protocols for Next Protocol Negotiation.
3275
+ //
3276
+ // If the callback wishes to advertise NPN to the client, it should return
3277
+ // |SSL_TLSEXT_ERR_OK| and then set |*out| and |*out_len| to describe to a
3278
+ // buffer containing a (possibly empty) list of supported protocols in wire
3279
+ // format. That is, each protocol is prefixed with a 1-byte length, then
3280
+ // concatenated. From there, the client will select a protocol, possibly one not
3281
+ // on the server's list. The caller can use |SSL_get0_next_proto_negotiated|
3282
+ // after the handshake completes to query the final protocol.
3283
+ //
3284
+ // The returned buffer must remain valid and unmodified for at least the
3285
+ // duration of the |SSL| operation (e.g. |SSL_do_handshake|) that triggered the
3286
+ // callback.
3287
+ //
3288
+ // If the caller wishes not to advertise NPN, it should return
3289
+ // |SSL_TLSEXT_ERR_NOACK|. No NPN extension will be included in the ServerHello,
3290
+ // and the TLS server will behave as if it does not implement NPN.
3120
3291
  OPENSSL_EXPORT void SSL_CTX_set_next_protos_advertised_cb(
3121
3292
  SSL_CTX *ctx,
3122
3293
  int (*cb)(SSL *ssl, const uint8_t **out, unsigned *out_len, void *arg),
3123
3294
  void *arg);
3124
3295
 
3125
3296
  // SSL_CTX_set_next_proto_select_cb sets a callback that is called when a client
3126
- // needs to select a protocol from the server's provided list. |*out| must be
3127
- // set to point to the selected protocol (which may be within |in|). The length
3128
- // of the protocol name must be written into |*out_len|. The server's advertised
3129
- // protocols are provided in |in| and |in_len|. The callback can assume that
3130
- // |in| is syntactically valid.
3131
- //
3132
- // The client must select a protocol. It is fatal to the connection if this
3133
- // callback returns a value other than |SSL_TLSEXT_ERR_OK|.
3134
- //
3135
- // Configuring this callback enables NPN on a client.
3297
+ // needs to select a protocol from the server's provided list, passed in wire
3298
+ // format in |in_len| bytes from |in|. The callback can assume that |in| is
3299
+ // syntactically valid. |SSL_select_next_proto| is an optional utility function
3300
+ // which may be useful in implementing this callback.
3301
+ //
3302
+ // On success, the callback should return |SSL_TLSEXT_ERR_OK| and set |*out| and
3303
+ // |*out_len| to describe a buffer containing the selected protocol, or an
3304
+ // empty buffer to select no protocol. The returned buffer may point within
3305
+ // |in|, or it may point to some other buffer that remains valid and unmodified
3306
+ // for at least the duration of the |SSL| operation (e.g. |SSL_do_handshake|)
3307
+ // that triggered the callback.
3308
+ //
3309
+ // Returning any other value indicates a fatal error and will terminate the TLS
3310
+ // connection. To proceed without selecting a protocol, the callback must return
3311
+ // |SSL_TLSEXT_ERR_OK| and set |*out| and |*out_len| to an empty buffer. (E.g.
3312
+ // NULL and zero, respectively.)
3313
+ //
3314
+ // Configuring this callback enables NPN on a client. Although the callback can
3315
+ // then decline to negotiate a protocol, merely configuring the callback causes
3316
+ // the client to offer NPN in the ClientHello. Callers thus should not configure
3317
+ // this callback in TLS client contexts that are not intended to use NPN.
3136
3318
  OPENSSL_EXPORT void SSL_CTX_set_next_proto_select_cb(
3137
3319
  SSL_CTX *ctx, int (*cb)(SSL *ssl, uint8_t **out, uint8_t *out_len,
3138
3320
  const uint8_t *in, unsigned in_len, void *arg),
@@ -3140,7 +3322,7 @@ OPENSSL_EXPORT void SSL_CTX_set_next_proto_select_cb(
3140
3322
 
3141
3323
  // SSL_get0_next_proto_negotiated sets |*out_data| and |*out_len| to point to
3142
3324
  // the client's requested protocol for this connection. If the client didn't
3143
- // request any protocol, then |*out_data| is set to NULL.
3325
+ // request any protocol, then |*out_len| is set to zero.
3144
3326
  //
3145
3327
  // Note that the client can request any protocol it chooses. The value returned
3146
3328
  // from this function need not be a member of the list of supported protocols
@@ -3149,21 +3331,45 @@ OPENSSL_EXPORT void SSL_get0_next_proto_negotiated(const SSL *ssl,
3149
3331
  const uint8_t **out_data,
3150
3332
  unsigned *out_len);
3151
3333
 
3152
- // SSL_select_next_proto implements the standard protocol selection. It is
3153
- // expected that this function is called from the callback set by
3334
+ // SSL_select_next_proto implements the standard protocol selection for either
3335
+ // ALPN servers or NPN clients. It is expected that this function is called from
3336
+ // the callback set by |SSL_CTX_set_alpn_select_cb| or
3154
3337
  // |SSL_CTX_set_next_proto_select_cb|.
3155
3338
  //
3156
- // |peer| and |supported| must be vectors of 8-bit, length-prefixed byte strings
3157
- // containing the peer and locally-configured protocols, respectively. The
3158
- // length byte itself is not included in the length. A byte string of length 0
3159
- // is invalid. No byte string may be truncated. |supported| is assumed to be
3160
- // non-empty.
3161
- //
3162
- // This function finds the first protocol in |peer| which is also in
3163
- // |supported|. If one was found, it sets |*out| and |*out_len| to point to it
3164
- // and returns |OPENSSL_NPN_NEGOTIATED|. Otherwise, it returns
3339
+ // |peer| and |supported| contain the peer and locally-configured protocols,
3340
+ // respectively. This function finds the first protocol in |peer| which is also
3341
+ // in |supported|. If one was found, it sets |*out| and |*out_len| to point to
3342
+ // it and returns |OPENSSL_NPN_NEGOTIATED|. Otherwise, it returns
3165
3343
  // |OPENSSL_NPN_NO_OVERLAP| and sets |*out| and |*out_len| to the first
3166
3344
  // supported protocol.
3345
+ //
3346
+ // In ALPN, the server should only select protocols among those that the client
3347
+ // offered. Thus, if this function returns |OPENSSL_NPN_NO_OVERLAP|, the caller
3348
+ // should ignore |*out| and return |SSL_TLSEXT_ERR_ALERT_FATAL| from
3349
+ // |SSL_CTX_set_alpn_select_cb|'s callback to indicate there was no match.
3350
+ //
3351
+ // In NPN, the client may either select one of the server's protocols, or an
3352
+ // "opportunistic" protocol as described in Section 6 of
3353
+ // draft-agl-tls-nextprotoneg-03. When this function returns
3354
+ // |OPENSSL_NPN_NO_OVERLAP|, |*out| implicitly selects the first supported
3355
+ // protocol for use as the opportunistic protocol. The caller may use it,
3356
+ // ignore it and select a different opportunistic protocol, or ignore it and
3357
+ // select no protocol (empty string).
3358
+ //
3359
+ // |peer| and |supported| must be vectors of 8-bit, length-prefixed byte
3360
+ // strings. The length byte itself is not included in the length. A byte string
3361
+ // of length 0 is invalid. No byte string may be truncated. |supported| must be
3362
+ // non-empty; a caller that supports no ALPN/NPN protocols should skip
3363
+ // negotiating the extension, rather than calling this function. If any of these
3364
+ // preconditions do not hold, this function will return |OPENSSL_NPN_NO_OVERLAP|
3365
+ // and set |*out| and |*out_len| to an empty buffer for robustness, but callers
3366
+ // are not recommended to rely on this. An empty buffer is not a valid output
3367
+ // for |SSL_CTX_set_alpn_select_cb|'s callback.
3368
+ //
3369
+ // WARNING: |*out| and |*out_len| may alias either |peer| or |supported| and may
3370
+ // not be used after one of those buffers is modified or released. Additionally,
3371
+ // this function is not const-correct for compatibility reasons. Although |*out|
3372
+ // is a non-const pointer, callers may not modify the buffer though |*out|.
3167
3373
  OPENSSL_EXPORT int SSL_select_next_proto(uint8_t **out, uint8_t *out_len,
3168
3374
  const uint8_t *peer, unsigned peer_len,
3169
3375
  const uint8_t *supported,
@@ -3335,41 +3541,34 @@ OPENSSL_EXPORT const char *SSL_get_psk_identity(const SSL *ssl);
3335
3541
 
3336
3542
  // Delegated credentials.
3337
3543
  //
3338
- // *** EXPERIMENTAL PRONE TO CHANGE ***
3339
- //
3340
- // draft-ietf-tls-subcerts is a proposed extension for TLS 1.3 and above that
3341
- // allows an end point to use its certificate to delegate credentials for
3342
- // authentication. If the peer indicates support for this extension, then this
3343
- // host may use a delegated credential to sign the handshake. Once issued,
3544
+ // Delegated credentials (RFC 9345) allow a TLS 1.3 endpoint to use its
3545
+ // certificate to issue new credentials for authentication. Once issued,
3344
3546
  // credentials can't be revoked. In order to mitigate the damage in case the
3345
3547
  // credential secret key is compromised, the credential is only valid for a
3346
- // short time (days, hours, or even minutes). This library implements draft-03
3347
- // of the protocol spec.
3548
+ // short time (days, hours, or even minutes).
3348
3549
  //
3349
- // The extension ID has not been assigned; we're using 0xff02 for the time
3350
- // being. Currently only the server side is implemented.
3351
- //
3352
- // Servers configure a DC for use in the handshake via
3353
- // |SSL_set1_delegated_credential|. It must be signed by the host's end-entity
3354
- // certificate as defined in draft-ietf-tls-subcerts-03.
3550
+ // Currently only the authenticating side, as a server, is implemented. To
3551
+ // authenticate with delegated credentials, construct an |SSL_CREDENTIAL| with
3552
+ // |SSL_CREDENTIAL_new_delegated| and add it to the credential list. See also
3553
+ // |SSL_CTX_add1_credential|. Callers may configure a mix of delegated
3554
+ // credentials and X.509 credentials on the same |SSL| or |SSL_CTX| to support a
3555
+ // range of clients.
3355
3556
 
3356
- // SSL_set1_delegated_credential configures the delegated credential (DC) that
3357
- // will be sent to the peer for the current connection. |dc| is the DC in wire
3358
- // format, and |pkey| or |key_method| is the corresponding private key.
3359
- // Currently (as of draft-03), only servers may configure a DC to use in the
3360
- // handshake.
3557
+ // SSL_CREDENTIAL_new_delegated returns a new, empty delegated credential, or
3558
+ // NULL on error. Callers should release the result with |SSL_CREDENTIAL_free|
3559
+ // when done.
3361
3560
  //
3362
- // The DC will only be used if the protocol version is correct and the signature
3363
- // scheme is supported by the peer. If not, the DC will not be negotiated and
3364
- // the handshake will use the private key (or private key method) associated
3365
- // with the certificate.
3366
- OPENSSL_EXPORT int SSL_set1_delegated_credential(
3367
- SSL *ssl, CRYPTO_BUFFER *dc, EVP_PKEY *pkey,
3368
- const SSL_PRIVATE_KEY_METHOD *key_method);
3561
+ // Callers should configure a delegated credential, certificate chain and
3562
+ // private key on the credential, along with other properties, then add it with
3563
+ // |SSL_CTX_add1_credential|.
3564
+ OPENSSL_EXPORT SSL_CREDENTIAL *SSL_CREDENTIAL_new_delegated(void);
3369
3565
 
3370
- // SSL_delegated_credential_used returns one if a delegated credential was used
3371
- // and zero otherwise.
3372
- OPENSSL_EXPORT int SSL_delegated_credential_used(const SSL *ssl);
3566
+ // SSL_CREDENTIAL_set1_delegated_credential sets |cred|'s delegated credentials
3567
+ // structure to |dc|. It returns one on success and zero on error, including if
3568
+ // |dc| is malformed. This should be a DelegatedCredential structure, signed by
3569
+ // the end-entity certificate, as described in RFC 9345.
3570
+ OPENSSL_EXPORT int SSL_CREDENTIAL_set1_delegated_credential(
3571
+ SSL_CREDENTIAL *cred, CRYPTO_BUFFER *dc);
3373
3572
 
3374
3573
 
3375
3574
  // QUIC integration.
@@ -3838,7 +4037,7 @@ OPENSSL_EXPORT void SSL_get0_ech_retry_configs(
3838
4037
  // to the size of the buffer. The caller must call |OPENSSL_free| on |*out| to
3839
4038
  // release the memory. On failure, it returns zero.
3840
4039
  //
3841
- // The |config_id| field is a single byte identifer for the ECHConfig. Reusing
4040
+ // The |config_id| field is a single byte identifier for the ECHConfig. Reusing
3842
4041
  // config IDs is allowed, but if multiple ECHConfigs with the same config ID are
3843
4042
  // active at a time, server load may increase. See
3844
4043
  // |SSL_ECH_KEYS_has_duplicate_config_id|.
@@ -4034,6 +4233,15 @@ OPENSSL_EXPORT int SSL_CTX_get_ex_new_index(long argl, void *argp,
4034
4233
  CRYPTO_EX_dup *dup_unused,
4035
4234
  CRYPTO_EX_free *free_func);
4036
4235
 
4236
+ OPENSSL_EXPORT int SSL_CREDENTIAL_set_ex_data(SSL_CREDENTIAL *cred, int idx,
4237
+ void *data);
4238
+ OPENSSL_EXPORT void *SSL_CREDENTIAL_get_ex_data(const SSL_CREDENTIAL *cred,
4239
+ int idx);
4240
+ OPENSSL_EXPORT int SSL_CREDENTIAL_get_ex_new_index(long argl, void *argp,
4241
+ CRYPTO_EX_unused *unused,
4242
+ CRYPTO_EX_dup *dup_unused,
4243
+ CRYPTO_EX_free *free_func);
4244
+
4037
4245
 
4038
4246
  // Low-level record-layer state.
4039
4247
 
@@ -4217,9 +4425,18 @@ OPENSSL_EXPORT void SSL_set_msg_callback_arg(SSL *ssl, void *arg);
4217
4425
  // access to the log.
4218
4426
  //
4219
4427
  // The format is described in
4220
- // https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Key_Log_Format.
4221
- OPENSSL_EXPORT void SSL_CTX_set_keylog_callback(
4222
- SSL_CTX *ctx, void (*cb)(const SSL *ssl, const char *line));
4428
+ // https://www.ietf.org/archive/id/draft-ietf-tls-keylogfile-01.html
4429
+ //
4430
+ // WARNING: The data in |line| allows an attacker to break security properties
4431
+ // of the TLS protocol, including confidentiality, integrity, and forward
4432
+ // secrecy. This impacts both the current connection, and, in TLS 1.2, future
4433
+ // connections that resume a session from it. Both direct access to the data and
4434
+ // side channel leaks from application code are possible attack vectors. This
4435
+ // callback is intended for debugging and should not be used in production
4436
+ // connections.
4437
+ OPENSSL_EXPORT void SSL_CTX_set_keylog_callback(SSL_CTX *ctx,
4438
+ void (*cb)(const SSL *ssl,
4439
+ const char *line));
4223
4440
 
4224
4441
  // SSL_CTX_get_keylog_callback returns the callback configured by
4225
4442
  // |SSL_CTX_set_keylog_callback|.
@@ -4626,10 +4843,28 @@ OPENSSL_EXPORT int SSL_used_hello_retry_request(const SSL *ssl);
4626
4843
  // https://bugs.openjdk.java.net/browse/JDK-8213202
4627
4844
  OPENSSL_EXPORT void SSL_set_jdk11_workaround(SSL *ssl, int enable);
4628
4845
 
4846
+ // SSL_set_check_client_certificate_type configures whether the client, in
4847
+ // TLS 1.2 and below, will check its certificate against the server's requested
4848
+ // certificate types.
4849
+ //
4850
+ // By default, this option is enabled. If disabled, certificate selection within
4851
+ // the library may not function correctly. This flag is provided temporarily in
4852
+ // case of compatibility issues. It will be removed sometime after June 2024.
4853
+ OPENSSL_EXPORT void SSL_set_check_client_certificate_type(SSL *ssl, int enable);
4854
+
4855
+ // SSL_set_check_ecdsa_curve configures whether the server, in TLS 1.2 and
4856
+ // below, will check its certificate against the client's supported ECDSA
4857
+ // curves.
4858
+ //
4859
+ // By default, this option is enabled. If disabled, certificate selection within
4860
+ // the library may not function correctly. This flag is provided temporarily in
4861
+ // case of compatibility issues. It will be removed sometime after June 2024.
4862
+ OPENSSL_EXPORT void SSL_set_check_ecdsa_curve(SSL *ssl, int enable);
4863
+
4629
4864
 
4630
4865
  // Deprecated functions.
4631
4866
 
4632
- // SSL_library_init calls |CRYPTO_library_init| and returns one.
4867
+ // SSL_library_init returns one.
4633
4868
  OPENSSL_EXPORT int SSL_library_init(void);
4634
4869
 
4635
4870
  // SSL_CIPHER_description writes a description of |cipher| into |buf| and
@@ -5192,7 +5427,7 @@ OPENSSL_EXPORT SSL_SESSION *SSL_get1_session(SSL *ssl);
5192
5427
  #define OPENSSL_INIT_LOAD_SSL_STRINGS 0
5193
5428
  #define OPENSSL_INIT_SSL_DEFAULT 0
5194
5429
 
5195
- // OPENSSL_init_ssl calls |CRYPTO_library_init| and returns one.
5430
+ // OPENSSL_init_ssl returns one.
5196
5431
  OPENSSL_EXPORT int OPENSSL_init_ssl(uint64_t opts,
5197
5432
  const OPENSSL_INIT_SETTINGS *settings);
5198
5433
 
@@ -5315,6 +5550,25 @@ OPENSSL_EXPORT int SSL_set1_curves_list(SSL *ssl, const char *curves);
5315
5550
  // returns this value, but we define this constant for compatibility.
5316
5551
  #define TLSEXT_nid_unknown 0x1000000
5317
5552
 
5553
+ // SSL_CTX_check_private_key returns one if |ctx| has both a certificate and
5554
+ // private key, and zero otherwise.
5555
+ //
5556
+ // This function does not check consistency because the library checks when the
5557
+ // certificate and key are individually configured. However, if the private key
5558
+ // is configured before the certificate, inconsistent private keys are silently
5559
+ // dropped. Some callers are inadvertently relying on this function to detect
5560
+ // when this happens.
5561
+ //
5562
+ // Instead, callers should configure the certificate first, then the private
5563
+ // key, checking for errors in each. This function is then unnecessary.
5564
+ OPENSSL_EXPORT int SSL_CTX_check_private_key(const SSL_CTX *ctx);
5565
+
5566
+ // SSL_check_private_key returns one if |ssl| has both a certificate and private
5567
+ // key, and zero otherwise.
5568
+ //
5569
+ // See discussion in |SSL_CTX_check_private_key|.
5570
+ OPENSSL_EXPORT int SSL_check_private_key(const SSL *ssl);
5571
+
5318
5572
 
5319
5573
  // Compliance policy configurations
5320
5574
  //
@@ -5543,6 +5797,8 @@ extern "C++" {
5543
5797
  BSSL_NAMESPACE_BEGIN
5544
5798
 
5545
5799
  BORINGSSL_MAKE_DELETER(SSL, SSL_free)
5800
+ BORINGSSL_MAKE_DELETER(SSL_CREDENTIAL, SSL_CREDENTIAL_free)
5801
+ BORINGSSL_MAKE_UP_REF(SSL_CREDENTIAL, SSL_CREDENTIAL_up_ref)
5546
5802
  BORINGSSL_MAKE_DELETER(SSL_CTX, SSL_CTX_free)
5547
5803
  BORINGSSL_MAKE_UP_REF(SSL_CTX, SSL_CTX_up_ref)
5548
5804
  BORINGSSL_MAKE_DELETER(SSL_ECH_KEYS, SSL_ECH_KEYS_free)