grpc 1.64.3 → 1.65.0

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 (632) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +57 -58
  3. data/include/grpc/event_engine/event_engine.h +13 -6
  4. data/include/grpc/impl/channel_arg_names.h +7 -3
  5. data/include/grpc/module.modulemap +1 -0
  6. data/include/grpc/passive_listener.h +62 -0
  7. data/include/grpc/support/log.h +7 -17
  8. data/include/grpc/support/port_platform.h +3 -0
  9. data/src/core/channelz/channel_trace.cc +1 -1
  10. data/src/core/channelz/channel_trace.h +1 -1
  11. data/src/core/channelz/channelz.cc +3 -3
  12. data/src/core/channelz/channelz.h +7 -7
  13. data/src/core/channelz/channelz_registry.cc +4 -3
  14. data/src/core/client_channel/backup_poller.cc +4 -5
  15. data/src/core/client_channel/client_channel.cc +1324 -0
  16. data/src/core/client_channel/client_channel.h +243 -0
  17. data/src/core/client_channel/client_channel_filter.cc +266 -709
  18. data/src/core/client_channel/client_channel_filter.h +11 -64
  19. data/src/core/client_channel/client_channel_internal.h +16 -5
  20. data/src/core/client_channel/client_channel_plugin.cc +1 -14
  21. data/src/core/client_channel/client_channel_service_config.h +3 -3
  22. data/src/core/client_channel/config_selector.cc +1 -1
  23. data/src/core/client_channel/config_selector.h +1 -1
  24. data/src/core/client_channel/dynamic_filters.cc +3 -3
  25. data/src/core/client_channel/dynamic_filters.h +1 -3
  26. data/src/core/client_channel/load_balanced_call_destination.cc +336 -0
  27. data/src/core/client_channel/load_balanced_call_destination.h +49 -0
  28. data/src/core/client_channel/retry_filter.cc +2 -9
  29. data/src/core/client_channel/retry_filter.h +2 -7
  30. data/src/core/client_channel/retry_filter_legacy_call_data.cc +65 -72
  31. data/src/core/client_channel/retry_filter_legacy_call_data.h +0 -2
  32. data/src/core/client_channel/retry_service_config.cc +4 -5
  33. data/src/core/client_channel/retry_service_config.h +3 -3
  34. data/src/core/client_channel/subchannel.cc +220 -112
  35. data/src/core/client_channel/subchannel.h +31 -18
  36. data/src/core/client_channel/subchannel_pool_interface.cc +0 -2
  37. data/src/core/client_channel/subchannel_pool_interface.h +2 -4
  38. data/src/core/client_channel/subchannel_stream_client.cc +36 -49
  39. data/src/core/client_channel/subchannel_stream_client.h +2 -4
  40. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +7 -10
  41. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +1 -0
  42. data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
  43. data/src/core/ext/filters/census/grpc_context.cc +2 -4
  44. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +8 -15
  45. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +2 -0
  46. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -7
  47. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -0
  48. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -3
  49. data/src/core/ext/filters/http/client/http_client_filter.cc +1 -0
  50. data/src/core/ext/filters/http/client/http_client_filter.h +1 -0
  51. data/src/core/ext/filters/http/client_authority_filter.cc +1 -0
  52. data/src/core/ext/filters/http/client_authority_filter.h +1 -0
  53. data/src/core/ext/filters/http/message_compress/compression_filter.cc +10 -15
  54. data/src/core/ext/filters/http/message_compress/compression_filter.h +2 -0
  55. data/src/core/ext/filters/http/server/http_server_filter.cc +2 -2
  56. data/src/core/ext/filters/http/server/http_server_filter.h +1 -0
  57. data/src/core/ext/filters/message_size/message_size_filter.cc +6 -9
  58. data/src/core/ext/filters/message_size/message_size_filter.h +6 -6
  59. data/src/core/ext/filters/rbac/rbac_filter.cc +2 -5
  60. data/src/core/ext/filters/rbac/rbac_filter.h +1 -0
  61. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
  62. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
  63. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +2 -6
  64. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +1 -0
  65. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
  66. data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -1
  67. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -25
  68. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -5
  69. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +223 -148
  70. data/src/core/ext/transport/chttp2/server/chttp2_server.h +33 -0
  71. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +131 -107
  72. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +8 -8
  73. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +1 -1
  74. data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -4
  75. data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -2
  76. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -6
  77. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +1 -2
  78. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +9 -5
  79. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -4
  80. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +9 -2
  81. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -43
  82. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
  83. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +3 -8
  84. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
  85. data/src/core/ext/transport/chttp2/transport/http2_settings.h +1 -1
  86. data/src/core/ext/transport/chttp2/transport/internal.h +29 -19
  87. data/src/core/ext/transport/chttp2/transport/parsing.cc +15 -25
  88. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +0 -2
  89. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +0 -2
  90. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +29 -13
  91. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +5 -4
  92. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -5
  93. data/src/core/ext/transport/chttp2/transport/writing.cc +24 -25
  94. data/src/core/ext/transport/inproc/inproc_transport.cc +56 -32
  95. data/src/core/ext/transport/inproc/inproc_transport.h +1 -3
  96. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +13 -15
  97. data/src/core/ext/transport/inproc/legacy_inproc_transport.h +0 -2
  98. data/src/core/handshaker/handshaker.cc +6 -14
  99. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +9 -17
  100. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +3 -2
  101. data/src/core/handshaker/security/secure_endpoint.cc +38 -32
  102. data/src/core/handshaker/security/secure_endpoint.h +0 -2
  103. data/src/core/handshaker/security/security_handshaker.cc +25 -37
  104. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +2 -1
  105. data/src/core/lib/address_utils/parse_address.cc +27 -39
  106. data/src/core/lib/address_utils/sockaddr_utils.cc +5 -6
  107. data/src/core/lib/avl/avl.h +1 -1
  108. data/src/core/lib/channel/channel_args.cc +13 -17
  109. data/src/core/lib/channel/channel_args.h +19 -8
  110. data/src/core/lib/channel/channel_stack.cc +5 -63
  111. data/src/core/lib/channel/channel_stack.h +13 -37
  112. data/src/core/lib/channel/channel_stack_builder.h +0 -5
  113. data/src/core/lib/channel/channel_stack_builder_impl.cc +0 -142
  114. data/src/core/lib/channel/channel_stack_builder_impl.h +0 -2
  115. data/src/core/lib/channel/connected_channel.cc +37 -676
  116. data/src/core/lib/channel/promise_based_filter.cc +41 -47
  117. data/src/core/lib/channel/promise_based_filter.h +124 -477
  118. data/src/core/lib/channel/status_util.cc +1 -1
  119. data/src/core/lib/compression/compression.cc +1 -1
  120. data/src/core/lib/compression/message_compress.cc +6 -6
  121. data/src/core/lib/config/config_vars.cc +3 -8
  122. data/src/core/lib/config/config_vars.h +1 -5
  123. data/src/core/lib/debug/event_log.h +1 -1
  124. data/src/core/lib/debug/trace.cc +43 -59
  125. data/src/core/lib/debug/trace.h +2 -97
  126. data/src/core/lib/debug/trace_flags.cc +255 -0
  127. data/src/core/lib/debug/trace_flags.h +133 -0
  128. data/src/core/lib/debug/trace_impl.h +115 -0
  129. data/src/core/lib/event_engine/ares_resolver.cc +5 -7
  130. data/src/core/lib/event_engine/ares_resolver.h +1 -3
  131. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +1 -1
  132. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +17 -22
  133. data/src/core/lib/event_engine/event_engine.cc +29 -4
  134. data/src/core/lib/event_engine/extensions/supports_fd.h +7 -0
  135. data/src/core/lib/event_engine/extensions/tcp_trace.h +43 -0
  136. data/src/core/lib/event_engine/forkable.cc +4 -5
  137. data/src/core/lib/event_engine/forkable.h +0 -11
  138. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +10 -11
  139. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +4 -3
  140. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +1 -1
  141. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +19 -33
  142. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +3 -2
  143. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +24 -7
  144. data/src/core/lib/event_engine/posix_engine/posix_engine.h +2 -0
  145. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +14 -16
  146. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +18 -22
  147. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +13 -17
  148. data/src/core/lib/event_engine/posix_engine/timer.cc +1 -1
  149. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +4 -6
  150. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -1
  151. data/src/core/lib/event_engine/shim.cc +1 -1
  152. data/src/core/lib/event_engine/tcp_socket_utils.cc +6 -8
  153. data/src/core/lib/event_engine/thread_local.h +1 -1
  154. data/src/core/lib/event_engine/thread_pool/thread_count.h +1 -1
  155. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +19 -21
  156. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -6
  157. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +14 -13
  158. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +4 -3
  159. data/src/core/lib/event_engine/trace.h +6 -17
  160. data/src/core/lib/event_engine/windows/iocp.h +1 -1
  161. data/src/core/lib/event_engine/windows/win_socket.cc +23 -17
  162. data/src/core/lib/event_engine/windows/win_socket.h +4 -5
  163. data/src/core/lib/event_engine/windows/windows_endpoint.cc +6 -9
  164. data/src/core/lib/event_engine/windows/windows_engine.cc +201 -87
  165. data/src/core/lib/event_engine/windows/windows_engine.h +136 -25
  166. data/src/core/lib/event_engine/windows/windows_listener.cc +12 -23
  167. data/src/core/lib/experiments/experiments.cc +35 -151
  168. data/src/core/lib/experiments/experiments.h +12 -45
  169. data/src/core/lib/gprpp/bitset.h +1 -1
  170. data/src/core/lib/gprpp/crash.cc +2 -3
  171. data/src/core/lib/gprpp/dual_ref_counted.h +45 -33
  172. data/src/core/lib/gprpp/dump_args.cc +54 -0
  173. data/src/core/lib/gprpp/dump_args.h +69 -0
  174. data/src/core/lib/gprpp/glob.cc +70 -0
  175. data/src/core/lib/gprpp/glob.h +29 -0
  176. data/src/core/lib/gprpp/per_cpu.cc +1 -1
  177. data/src/core/lib/gprpp/posix/stat.cc +3 -4
  178. data/src/core/lib/gprpp/posix/thd.cc +8 -9
  179. data/src/core/lib/gprpp/ref_counted.h +30 -22
  180. data/src/core/lib/gprpp/single_set_ptr.h +5 -3
  181. data/src/core/lib/gprpp/status_helper.cc +11 -30
  182. data/src/core/lib/gprpp/status_helper.h +3 -31
  183. data/src/core/lib/gprpp/time.cc +3 -4
  184. data/src/core/lib/gprpp/time.h +3 -2
  185. data/src/core/lib/gprpp/unique_type_name.h +1 -1
  186. data/src/core/lib/gprpp/validation_errors.cc +10 -1
  187. data/src/core/lib/gprpp/validation_errors.h +11 -0
  188. data/src/core/lib/gprpp/windows/stat.cc +3 -4
  189. data/src/core/lib/gprpp/windows/thd.cc +3 -2
  190. data/src/core/lib/gprpp/work_serializer.cc +48 -57
  191. data/src/core/lib/iomgr/buffer_list.cc +4 -2
  192. data/src/core/lib/iomgr/call_combiner.cc +18 -27
  193. data/src/core/lib/iomgr/call_combiner.h +1 -3
  194. data/src/core/lib/iomgr/cfstream_handle.cc +4 -6
  195. data/src/core/lib/iomgr/closure.h +2 -4
  196. data/src/core/lib/iomgr/combiner.cc +6 -8
  197. data/src/core/lib/iomgr/combiner.h +0 -2
  198. data/src/core/lib/iomgr/endpoint.cc +0 -6
  199. data/src/core/lib/iomgr/endpoint.h +0 -2
  200. data/src/core/lib/iomgr/endpoint_cfstream.cc +19 -41
  201. data/src/core/lib/iomgr/endpoint_pair_posix.cc +1 -1
  202. data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
  203. data/src/core/lib/iomgr/error.cc +13 -21
  204. data/src/core/lib/iomgr/error.h +1 -1
  205. data/src/core/lib/iomgr/ev_apple.cc +3 -5
  206. data/src/core/lib/iomgr/ev_epoll1_linux.cc +43 -42
  207. data/src/core/lib/iomgr/ev_poll_posix.cc +38 -29
  208. data/src/core/lib/iomgr/ev_posix.cc +8 -9
  209. data/src/core/lib/iomgr/ev_posix.h +10 -7
  210. data/src/core/lib/iomgr/event_engine_shims/closure.cc +2 -2
  211. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +14 -28
  212. data/src/core/lib/iomgr/exec_ctx.cc +2 -2
  213. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  214. data/src/core/lib/iomgr/executor.cc +6 -15
  215. data/src/core/lib/iomgr/executor.h +1 -1
  216. data/src/core/lib/iomgr/fork_posix.cc +8 -10
  217. data/src/core/lib/iomgr/fork_windows.cc +3 -1
  218. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -3
  219. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +3 -5
  220. data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
  221. data/src/core/lib/iomgr/iocp_windows.cc +4 -3
  222. data/src/core/lib/iomgr/iomgr.cc +13 -17
  223. data/src/core/lib/iomgr/lockfree_event.cc +3 -5
  224. data/src/core/lib/iomgr/pollset.h +0 -2
  225. data/src/core/lib/iomgr/pollset_windows.cc +0 -2
  226. data/src/core/lib/iomgr/resolve_address_posix.cc +7 -14
  227. data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
  228. data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
  229. data/src/core/lib/iomgr/socket_mutator.cc +1 -1
  230. data/src/core/lib/iomgr/socket_utils_common_posix.cc +11 -17
  231. data/src/core/lib/iomgr/socket_windows.cc +4 -6
  232. data/src/core/lib/iomgr/tcp_client_cfstream.cc +3 -5
  233. data/src/core/lib/iomgr/tcp_client_posix.cc +9 -15
  234. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -4
  235. data/src/core/lib/iomgr/tcp_posix.cc +57 -84
  236. data/src/core/lib/iomgr/tcp_posix.h +0 -2
  237. data/src/core/lib/iomgr/tcp_server_posix.cc +3 -3
  238. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +4 -6
  239. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -7
  240. data/src/core/lib/iomgr/tcp_server_windows.cc +10 -16
  241. data/src/core/lib/iomgr/tcp_windows.cc +25 -41
  242. data/src/core/lib/iomgr/timer_generic.cc +17 -20
  243. data/src/core/lib/iomgr/timer_heap.cc +1 -1
  244. data/src/core/lib/iomgr/timer_manager.cc +17 -30
  245. data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
  246. data/src/core/lib/iomgr/vsock.cc +1 -1
  247. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +3 -3
  248. data/src/core/lib/promise/activity.h +27 -4
  249. data/src/core/lib/promise/cancel_callback.h +24 -0
  250. data/src/core/lib/promise/context.h +11 -0
  251. data/src/core/lib/promise/detail/basic_seq.h +1 -2
  252. data/src/core/lib/promise/detail/join_state.h +354 -398
  253. data/src/core/lib/promise/detail/promise_like.h +6 -5
  254. data/src/core/lib/promise/detail/seq_state.h +1178 -1178
  255. data/src/core/lib/promise/for_each.h +6 -6
  256. data/src/core/lib/promise/interceptor_list.h +6 -7
  257. data/src/core/lib/promise/latch.h +9 -9
  258. data/src/core/lib/promise/map.h +17 -0
  259. data/src/core/lib/promise/observable.h +182 -0
  260. data/src/core/lib/promise/party.cc +7 -8
  261. data/src/core/lib/promise/party.h +10 -8
  262. data/src/core/lib/promise/pipe.h +16 -35
  263. data/src/core/lib/promise/promise.h +1 -0
  264. data/src/core/lib/promise/status_flag.h +2 -0
  265. data/src/core/lib/resource_quota/arena.cc +56 -79
  266. data/src/core/lib/resource_quota/arena.h +118 -209
  267. data/src/core/lib/resource_quota/memory_quota.cc +12 -13
  268. data/src/core/lib/resource_quota/memory_quota.h +2 -3
  269. data/src/core/lib/resource_quota/periodic_update.cc +1 -1
  270. data/src/core/lib/resource_quota/resource_quota.h +1 -1
  271. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  272. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
  273. data/src/core/lib/security/authorization/evaluate_args.cc +6 -8
  274. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +5 -6
  275. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -0
  276. data/src/core/lib/security/authorization/matchers.cc +3 -3
  277. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +2 -2
  278. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +2 -3
  279. data/src/core/lib/security/context/security_context.cc +12 -13
  280. data/src/core/lib/security/context/security_context.h +31 -8
  281. data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
  282. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +3 -1
  283. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -3
  284. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +5 -5
  285. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +3 -3
  286. data/src/core/lib/security/credentials/call_creds_util.cc +2 -1
  287. data/src/core/lib/security/credentials/channel_creds_registry.h +2 -2
  288. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +5 -3
  289. data/src/core/lib/security/credentials/composite/composite_credentials.h +1 -1
  290. data/src/core/lib/security/credentials/credentials.cc +6 -6
  291. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +4 -4
  292. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +2 -2
  293. data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -11
  294. data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -3
  295. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +2 -2
  296. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -4
  297. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -1
  298. data/src/core/lib/security/credentials/fake/fake_credentials.h +1 -1
  299. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
  300. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +11 -11
  301. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -1
  302. data/src/core/lib/security/credentials/iam/iam_credentials.h +1 -1
  303. data/src/core/lib/security/credentials/jwt/json_token.cc +14 -15
  304. data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
  305. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +6 -5
  306. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -1
  307. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +50 -54
  308. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
  309. data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
  310. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +12 -11
  311. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
  312. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
  313. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -3
  314. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +15 -21
  315. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
  316. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +21 -30
  317. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +1 -1
  318. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +1 -1
  319. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -4
  320. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +3 -5
  321. data/src/core/lib/security/credentials/tls/tls_credentials.cc +14 -16
  322. data/src/core/lib/security/credentials/tls/tls_utils.cc +4 -4
  323. data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -1
  324. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -16
  325. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +15 -12
  326. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +6 -6
  327. data/src/core/lib/security/security_connector/load_system_roots_windows.cc +1 -1
  328. data/src/core/lib/security/security_connector/local/local_security_connector.cc +8 -12
  329. data/src/core/lib/security/security_connector/security_connector.cc +1 -4
  330. data/src/core/lib/security/security_connector/security_connector.h +1 -3
  331. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +17 -19
  332. data/src/core/lib/security/security_connector/ssl_utils.cc +19 -21
  333. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +29 -40
  334. data/src/core/lib/security/transport/auth_filters.h +1 -0
  335. data/src/core/lib/security/transport/client_auth_filter.cc +7 -13
  336. data/src/core/lib/security/transport/server_auth_filter.cc +3 -8
  337. data/src/core/lib/security/util/json_util.h +1 -1
  338. data/src/core/lib/slice/slice.h +1 -1
  339. data/src/core/lib/slice/slice_refcount.h +2 -4
  340. data/src/core/lib/slice/slice_string_helpers.cc +1 -1
  341. data/src/core/lib/surface/api_trace.h +1 -3
  342. data/src/core/lib/surface/call.cc +64 -3738
  343. data/src/core/lib/surface/call.h +41 -143
  344. data/src/core/lib/surface/call_log_batch.cc +1 -1
  345. data/src/core/lib/surface/call_utils.cc +276 -0
  346. data/src/core/lib/surface/call_utils.h +449 -0
  347. data/src/core/lib/surface/channel.cc +8 -3
  348. data/src/core/lib/surface/channel.h +10 -7
  349. data/src/core/lib/surface/channel_create.cc +14 -6
  350. data/src/core/lib/surface/channel_create.h +3 -2
  351. data/src/core/lib/surface/channel_init.cc +21 -77
  352. data/src/core/lib/surface/channel_init.h +19 -97
  353. data/src/core/lib/surface/client_call.cc +419 -0
  354. data/src/core/lib/surface/client_call.h +180 -0
  355. data/src/core/lib/surface/completion_queue.cc +28 -33
  356. data/src/core/lib/surface/completion_queue.h +0 -8
  357. data/src/core/lib/surface/filter_stack_call.cc +1157 -0
  358. data/src/core/lib/surface/filter_stack_call.h +369 -0
  359. data/src/core/lib/surface/init.cc +7 -6
  360. data/src/core/lib/surface/lame_client.cc +1 -1
  361. data/src/core/lib/surface/legacy_channel.cc +40 -27
  362. data/src/core/lib/surface/legacy_channel.h +9 -18
  363. data/src/core/lib/surface/server_call.cc +222 -0
  364. data/src/core/lib/surface/server_call.h +167 -0
  365. data/src/core/lib/surface/version.cc +2 -2
  366. data/src/core/lib/transport/bdp_estimator.cc +3 -5
  367. data/src/core/lib/transport/bdp_estimator.h +2 -4
  368. data/src/core/lib/transport/call_arena_allocator.h +9 -7
  369. data/src/core/lib/transport/call_destination.h +76 -0
  370. data/src/core/lib/transport/call_filters.cc +28 -10
  371. data/src/core/lib/transport/call_filters.h +128 -22
  372. data/src/core/lib/transport/call_spine.cc +5 -6
  373. data/src/core/lib/transport/call_spine.h +159 -334
  374. data/src/core/lib/transport/connectivity_state.cc +8 -10
  375. data/src/core/lib/transport/connectivity_state.h +0 -2
  376. data/src/core/lib/transport/interception_chain.cc +155 -0
  377. data/src/core/lib/transport/interception_chain.h +236 -0
  378. data/src/core/lib/transport/metadata_batch.h +10 -1
  379. data/src/core/lib/transport/metadata_info.h +1 -1
  380. data/src/core/lib/transport/transport.cc +3 -6
  381. data/src/core/lib/transport/transport.h +43 -40
  382. data/src/core/load_balancing/child_policy_handler.cc +8 -8
  383. data/src/core/load_balancing/endpoint_list.cc +5 -5
  384. data/src/core/load_balancing/endpoint_list.h +1 -1
  385. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -0
  386. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -0
  387. data/src/core/load_balancing/grpclb/grpclb.cc +25 -29
  388. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +1 -1
  389. data/src/core/load_balancing/grpclb/load_balancer_api.cc +3 -4
  390. data/src/core/load_balancing/health_check_client.cc +10 -13
  391. data/src/core/load_balancing/lb_policy.cc +5 -8
  392. data/src/core/load_balancing/lb_policy.h +19 -3
  393. data/src/core/load_balancing/lb_policy_factory.h +1 -1
  394. data/src/core/load_balancing/lb_policy_registry.cc +2 -3
  395. data/src/core/load_balancing/lb_policy_registry.h +1 -1
  396. data/src/core/load_balancing/oob_backend_metric.cc +2 -4
  397. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +33 -35
  398. data/src/core/load_balancing/outlier_detection/outlier_detection.h +3 -3
  399. data/src/core/load_balancing/pick_first/pick_first.cc +65 -65
  400. data/src/core/load_balancing/priority/priority.cc +26 -28
  401. data/src/core/load_balancing/ring_hash/ring_hash.cc +11 -13
  402. data/src/core/load_balancing/ring_hash/ring_hash.h +3 -3
  403. data/src/core/load_balancing/rls/rls.cc +82 -82
  404. data/src/core/load_balancing/round_robin/round_robin.cc +17 -20
  405. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +54 -43
  406. data/src/core/load_balancing/weighted_target/weighted_target.cc +21 -24
  407. data/src/core/load_balancing/xds/cds.cc +14 -16
  408. data/src/core/load_balancing/xds/xds_cluster_impl.cc +16 -18
  409. data/src/core/load_balancing/xds/xds_cluster_manager.cc +15 -17
  410. data/src/core/load_balancing/xds/xds_override_host.cc +40 -41
  411. data/src/core/load_balancing/xds/xds_override_host.h +3 -3
  412. data/src/core/load_balancing/xds/xds_wrr_locality.cc +10 -12
  413. data/src/core/plugin_registry/grpc_plugin_registry.cc +5 -1
  414. data/src/core/resolver/binder/binder_resolver.cc +3 -2
  415. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +3 -2
  416. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
  417. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +7 -14
  418. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -5
  419. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  420. data/src/core/resolver/dns/dns_resolver_plugin.cc +6 -5
  421. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +4 -9
  422. data/src/core/resolver/dns/event_engine/service_config_helper.cc +5 -5
  423. data/src/core/resolver/dns/native/dns_resolver.cc +8 -9
  424. data/src/core/resolver/endpoint_addresses.cc +1 -1
  425. data/src/core/resolver/fake/fake_resolver.cc +1 -1
  426. data/src/core/resolver/fake/fake_resolver.h +1 -1
  427. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +13 -14
  428. data/src/core/resolver/polling_resolver.cc +30 -35
  429. data/src/core/resolver/resolver.cc +2 -6
  430. data/src/core/resolver/resolver.h +0 -2
  431. data/src/core/resolver/resolver_registry.cc +6 -8
  432. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +3 -3
  433. data/src/core/resolver/xds/xds_dependency_manager.cc +22 -23
  434. data/src/core/resolver/xds/xds_resolver.cc +13 -15
  435. data/src/core/server/server.cc +269 -389
  436. data/src/core/server/server.h +37 -19
  437. data/src/core/server/server_call_tracer_filter.cc +7 -14
  438. data/src/core/server/server_config_selector.h +1 -1
  439. data/src/core/server/server_config_selector_filter.cc +3 -3
  440. data/src/core/server/server_interface.h +2 -0
  441. data/src/core/server/xds_channel_stack_modifier.cc +1 -1
  442. data/src/core/server/xds_channel_stack_modifier.h +1 -1
  443. data/src/core/server/xds_server_config_fetcher.cc +1 -4
  444. data/src/core/service_config/service_config.h +1 -1
  445. data/src/core/service_config/service_config_call_data.h +13 -11
  446. data/src/core/service_config/service_config_channel_arg_filter.cc +6 -4
  447. data/src/core/service_config/service_config_impl.cc +5 -5
  448. data/src/core/service_config/service_config_impl.h +1 -1
  449. data/src/core/service_config/service_config_parser.cc +3 -6
  450. data/src/core/service_config/service_config_parser.h +1 -1
  451. data/src/core/{lib/channel → telemetry}/call_tracer.cc +20 -30
  452. data/src/core/{lib/channel → telemetry}/call_tracer.h +32 -9
  453. data/src/core/{lib/debug → telemetry}/histogram_view.cc +1 -1
  454. data/src/core/{lib/debug → telemetry}/histogram_view.h +3 -3
  455. data/src/core/telemetry/metrics.cc +178 -0
  456. data/src/core/telemetry/metrics.h +562 -0
  457. data/src/core/{lib/debug → telemetry}/stats.cc +1 -1
  458. data/src/core/{lib/debug → telemetry}/stats.h +5 -5
  459. data/src/core/{lib/debug → telemetry}/stats_data.cc +1 -1
  460. data/src/core/{lib/debug → telemetry}/stats_data.h +4 -4
  461. data/src/core/{lib/channel → telemetry}/tcp_tracer.h +3 -3
  462. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +12 -13
  463. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +25 -27
  464. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -33
  465. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
  466. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -1
  467. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +5 -4
  468. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +5 -3
  469. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  470. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -3
  471. data/src/core/tsi/fake_transport_security.cc +14 -17
  472. data/src/core/tsi/local_transport_security.cc +6 -5
  473. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +4 -4
  474. data/src/core/tsi/ssl_transport_security.cc +76 -81
  475. data/src/core/tsi/ssl_transport_security_utils.cc +74 -18
  476. data/src/core/tsi/ssl_transport_security_utils.h +11 -0
  477. data/src/core/tsi/transport_security.cc +0 -4
  478. data/src/core/tsi/transport_security.h +0 -2
  479. data/src/core/tsi/transport_security_interface.h +0 -4
  480. data/src/core/{lib/gpr → util}/alloc.h +3 -3
  481. data/src/core/{lib/gpr → util}/android/log.cc +0 -19
  482. data/src/core/{lib/gpr → util}/atm.cc +1 -1
  483. data/src/core/{ext/gcp/metadata_query.cc → util/gcp_metadata_query.cc} +25 -26
  484. data/src/core/{ext/gcp/metadata_query.h → util/gcp_metadata_query.h} +11 -11
  485. data/src/core/{lib/http → util/http_client}/format_request.cc +4 -3
  486. data/src/core/{lib/http → util/http_client}/format_request.h +6 -5
  487. data/src/core/{lib/http → util/http_client}/httpcli.cc +9 -10
  488. data/src/core/{lib/http → util/http_client}/httpcli.h +6 -5
  489. data/src/core/{lib/http → util/http_client}/httpcli_security_connector.cc +9 -9
  490. data/src/core/{lib/http → util/http_client}/httpcli_ssl_credentials.h +5 -4
  491. data/src/core/{lib/http → util/http_client}/parser.cc +4 -5
  492. data/src/core/{lib/http → util/http_client}/parser.h +5 -6
  493. data/src/core/{lib → util}/json/json.h +5 -4
  494. data/src/core/{lib → util}/json/json_args.h +5 -5
  495. data/src/core/{lib → util}/json/json_channel_args.h +6 -6
  496. data/src/core/{lib → util}/json/json_object_loader.cc +3 -2
  497. data/src/core/{lib → util}/json/json_object_loader.h +7 -7
  498. data/src/core/{lib → util}/json/json_reader.cc +3 -2
  499. data/src/core/{lib → util}/json/json_reader.h +6 -6
  500. data/src/core/{lib → util}/json/json_util.cc +4 -4
  501. data/src/core/{lib → util}/json/json_util.h +6 -6
  502. data/src/core/{lib → util}/json/json_writer.cc +3 -3
  503. data/src/core/{lib → util}/json/json_writer.h +6 -6
  504. data/src/core/{lib/gpr → util}/linux/log.cc +0 -45
  505. data/src/core/util/log.cc +165 -0
  506. data/src/core/{lib/gpr → util}/msys/tmpfile.cc +2 -2
  507. data/src/core/{lib/gpr → util}/posix/cpu.cc +1 -1
  508. data/src/core/{lib/gpr → util}/posix/log.cc +0 -42
  509. data/src/core/{lib/gpr → util}/posix/time.cc +1 -1
  510. data/src/core/{lib/gpr → util}/posix/tmpfile.cc +2 -2
  511. data/src/core/{lib/gpr → util}/spinlock.h +3 -3
  512. data/src/core/{lib/gpr → util}/string.cc +2 -2
  513. data/src/core/{lib/gpr → util}/string.h +3 -3
  514. data/src/core/{lib/gpr → util}/time_precise.cc +1 -1
  515. data/src/core/{lib/gpr → util}/time_precise.h +3 -3
  516. data/src/core/{lib/gpr → util}/tmpfile.h +3 -3
  517. data/src/core/{lib/gpr → util}/useful.h +3 -3
  518. data/src/core/{lib/gpr → util}/windows/log.cc +1 -44
  519. data/src/core/{lib/gpr → util}/windows/string.cc +1 -1
  520. data/src/core/{lib/gpr → util}/windows/string_util.cc +1 -1
  521. data/src/core/{lib/gpr → util}/windows/time.cc +1 -1
  522. data/src/core/{lib/gpr → util}/windows/tmpfile.cc +1 -1
  523. data/src/core/xds/grpc/certificate_provider_store.cc +3 -3
  524. data/src/core/xds/grpc/certificate_provider_store.h +4 -4
  525. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
  526. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +3 -3
  527. data/src/core/xds/grpc/xds_audit_logger_registry.h +1 -1
  528. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +5 -5
  529. data/src/core/xds/grpc/xds_bootstrap_grpc.h +3 -3
  530. data/src/core/xds/grpc/xds_certificate_provider.h +1 -1
  531. data/src/core/xds/grpc/xds_client_grpc.cc +27 -23
  532. data/src/core/xds/grpc/xds_client_grpc.h +2 -2
  533. data/src/core/xds/grpc/xds_cluster.cc +4 -5
  534. data/src/core/xds/grpc/xds_cluster.h +1 -1
  535. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
  536. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +1 -1
  537. data/src/core/xds/grpc/xds_common_types.cc +1 -1
  538. data/src/core/xds/grpc/xds_common_types.h +1 -1
  539. data/src/core/xds/grpc/xds_endpoint.cc +4 -5
  540. data/src/core/xds/grpc/xds_http_fault_filter.cc +2 -2
  541. data/src/core/xds/grpc/xds_http_filters.h +2 -2
  542. data/src/core/xds/grpc/xds_http_rbac_filter.cc +3 -3
  543. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +2 -2
  544. data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
  545. data/src/core/xds/grpc/xds_listener.cc +4 -6
  546. data/src/core/xds/grpc/xds_route_config.cc +7 -8
  547. data/src/core/xds/grpc/xds_transport_grpc.cc +2 -2
  548. data/src/core/xds/grpc/xds_transport_grpc.h +1 -1
  549. data/src/core/xds/xds_client/xds_api.cc +5 -9
  550. data/src/core/xds/xds_client/xds_bootstrap.cc +1 -1
  551. data/src/core/xds/xds_client/xds_bootstrap.h +1 -1
  552. data/src/core/xds/xds_client/xds_client.cc +39 -45
  553. data/src/core/xds/xds_client/xds_client.h +0 -3
  554. data/src/core/xds/xds_client/xds_client_stats.cc +6 -6
  555. data/src/core/xds/xds_client/xds_client_stats.h +2 -2
  556. data/src/ruby/bin/math_pb.rb +1 -22
  557. data/src/ruby/ext/grpc/rb_call.c +8 -1
  558. data/src/ruby/ext/grpc/rb_completion_queue.c +15 -32
  559. data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
  560. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
  561. data/src/ruby/ext/grpc/rb_server.c +39 -22
  562. data/src/ruby/lib/grpc/version.rb +1 -1
  563. data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
  564. data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
  565. data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
  566. data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
  567. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
  568. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
  569. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
  570. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +4 -0
  571. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +12 -12
  572. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +66 -41
  573. data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +1497 -0
  574. data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +58 -0
  575. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -3
  576. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +0 -2
  577. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +2 -0
  578. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -0
  579. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +45 -1
  580. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +33 -23
  581. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +3 -6
  582. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +9 -4
  583. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +6 -0
  584. data/third_party/boringssl-with-bazel/src/crypto/internal.h +7 -0
  585. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +0 -4
  586. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +49 -16
  587. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -10
  588. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +7 -17
  589. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +8 -6
  590. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +3 -0
  591. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +125 -0
  592. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +0 -23
  593. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +1 -1
  594. data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -10
  595. metadata +103 -93
  596. data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
  597. data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
  598. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
  599. data/src/core/handshaker/security/tsi_error.cc +0 -31
  600. data/src/core/handshaker/security/tsi_error.h +0 -30
  601. data/src/core/lib/channel/channel_stack_trace.cc +0 -19
  602. data/src/core/lib/channel/channel_stack_trace.h +0 -24
  603. data/src/core/lib/channel/context.h +0 -105
  604. data/src/core/lib/channel/metrics.cc +0 -334
  605. data/src/core/lib/channel/metrics.h +0 -365
  606. data/src/core/lib/event_engine/trace.cc +0 -25
  607. data/src/core/lib/gpr/log.cc +0 -166
  608. data/src/core/lib/iomgr/ev_windows.cc +0 -30
  609. data/src/core/lib/promise/trace.cc +0 -20
  610. data/src/core/lib/promise/trace.h +0 -24
  611. data/src/core/lib/resource_quota/trace.cc +0 -19
  612. data/src/core/lib/resource_quota/trace.h +0 -24
  613. data/src/core/lib/slice/slice_refcount.cc +0 -20
  614. data/src/core/lib/surface/api_trace.cc +0 -25
  615. data/src/core/lib/surface/call_trace.h +0 -24
  616. data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
  617. data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
  618. data/src/core/lib/transport/batch_builder.cc +0 -172
  619. data/src/core/lib/transport/batch_builder.h +0 -474
  620. data/src/core/resolver/xds/xds_resolver_trace.cc +0 -25
  621. data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
  622. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
  623. /data/src/core/{lib/gpr → util}/alloc.cc +0 -0
  624. /data/src/core/{lib/gpr → util}/iphone/cpu.cc +0 -0
  625. /data/src/core/{lib/gpr → util}/linux/cpu.cc +0 -0
  626. /data/src/core/{lib/gpr → util}/posix/string.cc +0 -0
  627. /data/src/core/{lib/gpr → util}/posix/sync.cc +0 -0
  628. /data/src/core/{lib/gpr → util}/sync.cc +0 -0
  629. /data/src/core/{lib/gpr → util}/sync_abseil.cc +0 -0
  630. /data/src/core/{lib/gpr → util}/time.cc +0 -0
  631. /data/src/core/{lib/gpr → util}/windows/cpu.cc +0 -0
  632. /data/src/core/{lib/gpr → util}/windows/sync.cc +0 -0
@@ -0,0 +1,58 @@
1
+ /* Copyright (c) 2023, Google LLC
2
+ *
3
+ * Permission to use, copy, modify, and/or distribute this software for any
4
+ * purpose with or without fee is hereby granted, provided that the above
5
+ * copyright notice and this permission notice appear in all copies.
6
+ *
7
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
10
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
12
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
13
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
14
+
15
+ #ifndef OPENSSL_HEADER_CRYPTO_DILITHIUM_INTERNAL_H
16
+ #define OPENSSL_HEADER_CRYPTO_DILITHIUM_INTERNAL_H
17
+
18
+ #include <openssl/base.h>
19
+ #include <openssl/experimental/dilithium.h>
20
+
21
+ #if defined(__cplusplus)
22
+ extern "C" {
23
+ #endif
24
+
25
+
26
+ // DILITHIUM_GENERATE_KEY_ENTROPY is the number of bytes of uniformly random
27
+ // entropy necessary to generate a key pair.
28
+ #define DILITHIUM_GENERATE_KEY_ENTROPY 32
29
+
30
+ // DILITHIUM_SIGNATURE_RANDOMIZER_BYTES is the number of bytes of uniformly
31
+ // random entropy necessary to generate a signature in randomized mode.
32
+ #define DILITHIUM_SIGNATURE_RANDOMIZER_BYTES 32
33
+
34
+ // DILITHIUM_generate_key_external_entropy generates a public/private key pair
35
+ // using the given seed, writes the encoded public key to
36
+ // |out_encoded_public_key| and sets |out_private_key| to the private key,
37
+ // returning 1 on success and 0 on failure. Returns 1 on success and 0 on
38
+ // failure.
39
+ OPENSSL_EXPORT int DILITHIUM_generate_key_external_entropy(
40
+ uint8_t out_encoded_public_key[DILITHIUM_PUBLIC_KEY_BYTES],
41
+ struct DILITHIUM_private_key *out_private_key,
42
+ const uint8_t entropy[DILITHIUM_GENERATE_KEY_ENTROPY]);
43
+
44
+ // DILITHIUM_sign_deterministic generates a signature for the message |msg| of
45
+ // length |msg_len| using |private_key| following the deterministic algorithm,
46
+ // and writes the encoded signature to |out_encoded_signature|. Returns 1 on
47
+ // success and 0 on failure.
48
+ OPENSSL_EXPORT int DILITHIUM_sign_deterministic(
49
+ uint8_t out_encoded_signature[DILITHIUM_SIGNATURE_BYTES],
50
+ const struct DILITHIUM_private_key *private_key, const uint8_t *msg,
51
+ size_t msg_len);
52
+
53
+
54
+ #if defined(__cplusplus)
55
+ } // extern C
56
+ #endif
57
+
58
+ #endif // OPENSSL_HEADER_CRYPTO_DILITHIUM_INTERNAL_H
@@ -208,6 +208,11 @@ int DSA_set0_pqg(DSA *dsa, BIGNUM *p, BIGNUM *q, BIGNUM *g) {
208
208
  int DSA_generate_parameters_ex(DSA *dsa, unsigned bits, const uint8_t *seed_in,
209
209
  size_t seed_len, int *out_counter,
210
210
  unsigned long *out_h, BN_GENCB *cb) {
211
+ if (bits > OPENSSL_DSA_MAX_MODULUS_BITS) {
212
+ OPENSSL_PUT_ERROR(DSA, DSA_R_INVALID_PARAMETERS);
213
+ return 0;
214
+ }
215
+
211
216
  int ok = 0;
212
217
  unsigned char seed[SHA256_DIGEST_LENGTH];
213
218
  unsigned char md[SHA256_DIGEST_LENGTH];
@@ -479,11 +484,13 @@ DSA *DSAparams_dup(const DSA *dsa) {
479
484
  }
480
485
 
481
486
  int DSA_generate_key(DSA *dsa) {
487
+ if (!dsa_check_key(dsa)) {
488
+ return 0;
489
+ }
490
+
482
491
  int ok = 0;
483
- BN_CTX *ctx = NULL;
484
492
  BIGNUM *pub_key = NULL, *priv_key = NULL;
485
-
486
- ctx = BN_CTX_new();
493
+ BN_CTX *ctx = BN_CTX_new();
487
494
  if (ctx == NULL) {
488
495
  goto err;
489
496
  }
@@ -65,8 +65,6 @@
65
65
  #include "../bytestring/internal.h"
66
66
 
67
67
 
68
- #define OPENSSL_DSA_MAX_MODULUS_BITS 10000
69
-
70
68
  // This function is in dsa_asn1.c rather than dsa.c because it is reachable from
71
69
  // |EVP_PKEY| parsers. This makes it easier for the static linker to drop most
72
70
  // of the DSA implementation.
@@ -42,6 +42,8 @@ struct dsa_st {
42
42
  CRYPTO_EX_DATA ex_data;
43
43
  };
44
44
 
45
+ #define OPENSSL_DSA_MAX_MODULUS_BITS 10000
46
+
45
47
  // dsa_check_key performs cheap self-checks on |dsa|, and ensures it is within
46
48
  // DoS bounds. It returns one on success and zero on error.
47
49
  int dsa_check_key(const DSA *dsa);
@@ -263,6 +263,11 @@ int BORINGSSL_integrity_test(void) {
263
263
  OPENSSL_cleanse(result, sizeof(result)); // FIPS 140-3, AS05.10.
264
264
  return 1;
265
265
  }
266
+
267
+ const uint8_t* FIPS_module_hash(void) {
268
+ return BORINGSSL_bcm_text_hash;
269
+ }
270
+
266
271
  #endif // OPENSSL_ASAN
267
272
 
268
273
  void BORINGSSL_FIPS_abort(void) {
@@ -119,6 +119,50 @@
119
119
  #include "internal.h"
120
120
  #include "rsaz_exp.h"
121
121
 
122
+ #if defined(OPENSSL_BN_ASM_MONT5)
123
+
124
+ // bn_mul_mont_gather5 multiples loads index |power| of |table|, multiplies it
125
+ // by |ap| modulo |np|, and stores the result in |rp|. The values are |num|
126
+ // words long and represented in Montgomery form. |n0| is a pointer to the
127
+ // corresponding field in |BN_MONT_CTX|. |table| must be aligned to at least
128
+ // 16 bytes. |power| must be less than 32 and is treated as secret.
129
+ //
130
+ // WARNING: This function implements Almost Montgomery Multiplication from
131
+ // https://eprint.iacr.org/2011/239. The inputs do not need to be fully reduced.
132
+ // However, even if they are fully reduced, the output may not be.
133
+ static void bn_mul_mont_gather5(
134
+ BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *table, const BN_ULONG *np,
135
+ const BN_ULONG *n0, int num, int power) {
136
+ if (bn_mulx4x_mont_gather5_capable(num)) {
137
+ bn_mulx4x_mont_gather5(rp, ap, table, np, n0, num, power);
138
+ } else if (bn_mul4x_mont_gather5_capable(num)) {
139
+ bn_mul4x_mont_gather5(rp, ap, table, np, n0, num, power);
140
+ } else {
141
+ bn_mul_mont_gather5_nohw(rp, ap, table, np, n0, num, power);
142
+ }
143
+ }
144
+
145
+ // bn_power5 squares |ap| five times and multiplies it by the value stored at
146
+ // index |power| of |table|, modulo |np|. It stores the result in |rp|. The
147
+ // values are |num| words long and represented in Montgomery form. |n0| is a
148
+ // pointer to the corresponding field in |BN_MONT_CTX|. |num| must be divisible
149
+ // by 8. |power| must be less than 32 and is treated as secret.
150
+ //
151
+ // WARNING: This function implements Almost Montgomery Multiplication from
152
+ // https://eprint.iacr.org/2011/239. The inputs do not need to be fully reduced.
153
+ // However, even if they are fully reduced, the output may not be.
154
+ static void bn_power5(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *table,
155
+ const BN_ULONG *np, const BN_ULONG *n0, int num,
156
+ int power) {
157
+ assert(bn_power5_capable(num));
158
+ if (bn_powerx5_capable(num)) {
159
+ bn_powerx5(rp, ap, table, np, n0, num, power);
160
+ } else {
161
+ bn_power5_nohw(rp, ap, table, np, n0, num, power);
162
+ }
163
+ }
164
+
165
+ #endif // defined(OPENSSL_BN_ASM_MONT5)
122
166
 
123
167
  int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) {
124
168
  int i, bits, ret = 0;
@@ -1079,7 +1123,7 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
1079
1123
 
1080
1124
  // Scan the exponent one window at a time starting from the most
1081
1125
  // significant bits.
1082
- if (top & 7) {
1126
+ if (!bn_power5_capable(top)) {
1083
1127
  while (bits >= 0) {
1084
1128
  for (wvalue = 0, i = 0; i < 5; i++, bits--) {
1085
1129
  wvalue = (wvalue << 1) + BN_is_bit_set(p, bits);
@@ -438,18 +438,26 @@ int bn_mul_mont_nohw(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
438
438
  #if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64)
439
439
  #define OPENSSL_BN_ASM_MONT5
440
440
 
441
- // bn_mul_mont_gather5 multiples loads index |power| of |table|, multiplies it
442
- // by |ap| modulo |np|, and stores the result in |rp|. The values are |num|
443
- // words long and represented in Montgomery form. |n0| is a pointer to the
444
- // corresponding field in |BN_MONT_CTX|. |table| must be aligned to at least
445
- // 16 bytes. |power| must be less than 32 and is treated as secret.
446
- //
447
- // WARNING: This function implements Almost Montgomery Multiplication from
448
- // https://eprint.iacr.org/2011/239. The inputs do not need to be fully reduced.
449
- // However, even if they are fully reduced, the output may not be.
450
- void bn_mul_mont_gather5(BN_ULONG *rp, const BN_ULONG *ap,
451
- const BN_ULONG *table, const BN_ULONG *np,
452
- const BN_ULONG *n0, int num, int power);
441
+ // The following functions implement |bn_mul_mont_gather5|. See
442
+ // |bn_mul_mont_gather5| for details.
443
+ OPENSSL_INLINE int bn_mul4x_mont_gather5_capable(int num) {
444
+ return (num & 7) == 0;
445
+ }
446
+ void bn_mul4x_mont_gather5(BN_ULONG *rp, const BN_ULONG *ap,
447
+ const BN_ULONG *table, const BN_ULONG *np,
448
+ const BN_ULONG *n0, int num, int power);
449
+
450
+ OPENSSL_INLINE int bn_mulx4x_mont_gather5_capable(int num) {
451
+ return bn_mul4x_mont_gather5_capable(num) && CRYPTO_is_ADX_capable() &&
452
+ CRYPTO_is_BMI1_capable() && CRYPTO_is_BMI2_capable();
453
+ }
454
+ void bn_mulx4x_mont_gather5(BN_ULONG *rp, const BN_ULONG *ap,
455
+ const BN_ULONG *table, const BN_ULONG *np,
456
+ const BN_ULONG *n0, int num, int power);
457
+
458
+ void bn_mul_mont_gather5_nohw(BN_ULONG *rp, const BN_ULONG *ap,
459
+ const BN_ULONG *table, const BN_ULONG *np,
460
+ const BN_ULONG *n0, int num, int power);
453
461
 
454
462
  // bn_scatter5 stores |inp| to index |power| of |table|. |inp| and each entry of
455
463
  // |table| are |num| words long. |power| must be less than 32 and is treated as
@@ -463,17 +471,19 @@ void bn_scatter5(const BN_ULONG *inp, size_t num, BN_ULONG *table,
463
471
  // is treated as secret. |table| must be aligned to at least 16 bytes.
464
472
  void bn_gather5(BN_ULONG *out, size_t num, const BN_ULONG *table, size_t power);
465
473
 
466
- // bn_power5 squares |ap| five times and multiplies it by the value stored at
467
- // index |power| of |table|, modulo |np|. It stores the result in |rp|. The
468
- // values are |num| words long and represented in Montgomery form. |n0| is a
469
- // pointer to the corresponding field in |BN_MONT_CTX|. |num| must be divisible
470
- // by 8. |power| must be less than 32 and is treated as secret.
471
- //
472
- // WARNING: This function implements Almost Montgomery Multiplication from
473
- // https://eprint.iacr.org/2011/239. The inputs do not need to be fully reduced.
474
- // However, even if they are fully reduced, the output may not be.
475
- void bn_power5(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *table,
476
- const BN_ULONG *np, const BN_ULONG *n0, int num, int power);
474
+ // The following functions implement |bn_power5|. See |bn_power5| for details.
475
+ void bn_power5_nohw(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *table,
476
+ const BN_ULONG *np, const BN_ULONG *n0, int num, int power);
477
+
478
+ OPENSSL_INLINE int bn_power5_capable(int num) { return (num & 7) == 0; }
479
+
480
+ OPENSSL_INLINE int bn_powerx5_capable(int num) {
481
+ return bn_power5_capable(num) && CRYPTO_is_ADX_capable() &&
482
+ CRYPTO_is_BMI1_capable() && CRYPTO_is_BMI2_capable();
483
+ }
484
+ void bn_powerx5(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *table,
485
+ const BN_ULONG *np, const BN_ULONG *n0, int num, int power);
486
+
477
487
  #endif // !OPENSSL_NO_ASM && OPENSSL_X86_64
478
488
 
479
489
  uint64_t bn_mont_n0(const BIGNUM *n);
@@ -20,13 +20,10 @@
20
20
  // that must be replaced with the real value during the build process. This
21
21
  // value need only be distinct, i.e. so that we can safely search-and-replace it
22
22
  // in an object file.
23
- const uint8_t BORINGSSL_bcm_text_hash[64];
24
- const uint8_t BORINGSSL_bcm_text_hash[64] = {
23
+ const uint8_t BORINGSSL_bcm_text_hash[32];
24
+ const uint8_t BORINGSSL_bcm_text_hash[32] = {
25
25
  0xae, 0x2c, 0xea, 0x2a, 0xbd, 0xa6, 0xf3, 0xec, 0x97, 0x7f, 0x9b,
26
26
  0xf6, 0x94, 0x9a, 0xfc, 0x83, 0x68, 0x27, 0xcb, 0xa0, 0xa0, 0x9f,
27
- 0x6b, 0x6f, 0xde, 0x52, 0xcd, 0xe2, 0xcd, 0xff, 0x31, 0x80, 0xa2,
28
- 0xd4, 0xc3, 0x66, 0x0f, 0xc2, 0x6a, 0x7b, 0xf4, 0xbe, 0x39, 0xa2,
29
- 0xd7, 0x25, 0xdb, 0x21, 0x98, 0xe9, 0xd5, 0x53, 0xbf, 0x5c, 0x32,
30
- 0x06, 0x83, 0x34, 0x0c, 0x65, 0x89, 0x52, 0xbd, 0x1f,
27
+ 0x6b, 0x6f, 0xde, 0x52, 0xcd, 0xe2, 0xcd, 0xff, 0x31, 0x80,
31
28
  };
32
29
  #endif // FIPS && SHARED_LIBRARY
@@ -80,6 +80,7 @@ OPENSSL_INLINE int sha512_hw_capable(void) {
80
80
 
81
81
  #define SHA1_ASM_NOHW
82
82
  #define SHA256_ASM_NOHW
83
+ #define SHA512_ASM_NOHW
83
84
 
84
85
  #define SHA1_ASM_SSSE3
85
86
  OPENSSL_INLINE int sha1_ssse3_capable(void) {
@@ -127,10 +128,14 @@ OPENSSL_INLINE int sha256_avx_capable(void) {
127
128
  void sha256_block_data_order_avx(uint32_t state[8], const uint8_t *data,
128
129
  size_t num);
129
130
 
130
- // TODO(crbug.com/boringssl/673): Move the remaining CPU dispatch to C.
131
- #define SHA512_ASM
132
- void sha512_block_data_order(uint64_t state[8], const uint8_t *data,
133
- size_t num_blocks);
131
+ #define SHA512_ASM_SSSE3
132
+ OPENSSL_INLINE int sha512_ssse3_capable(void) {
133
+ // TODO(davidben): Do we need to check the FXSR bit? The Intel manual does not
134
+ // say to.
135
+ return CRYPTO_is_SSSE3_capable() && CRYPTO_is_FXSR_capable();
136
+ }
137
+ void sha512_block_data_order_ssse3(uint64_t state[8], const uint8_t *data,
138
+ size_t num);
134
139
 
135
140
  #elif !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64)
136
141
 
@@ -516,6 +516,12 @@ static void sha512_block_data_order(uint64_t state[8], const uint8_t *data,
516
516
  return;
517
517
  }
518
518
  #endif
519
+ #if defined(SHA512_ASM_SSSE3)
520
+ if (sha512_ssse3_capable()) {
521
+ sha512_block_data_order_ssse3(state, data, num);
522
+ return;
523
+ }
524
+ #endif
519
525
  #if defined(SHA512_ASM_NEON)
520
526
  if (CRYPTO_is_NEON_capable()) {
521
527
  sha512_block_data_order_neon(state, data, num);
@@ -1174,6 +1174,11 @@ static inline uint64_t CRYPTO_rotr_u64(uint64_t value, int shift) {
1174
1174
 
1175
1175
  // Arithmetic functions.
1176
1176
 
1177
+ // The most efficient versions of these functions on GCC and Clang depend on C11
1178
+ // |_Generic|. If we ever need to call these from C++, we'll need to add a
1179
+ // variant that uses C++ overloads instead.
1180
+ #if !defined(__cplusplus)
1181
+
1177
1182
  // CRYPTO_addc_* returns |x + y + carry|, and sets |*out_carry| to the carry
1178
1183
  // bit. |carry| must be zero or one.
1179
1184
  #if OPENSSL_HAS_BUILTIN(__builtin_addc)
@@ -1275,6 +1280,8 @@ static inline uint64_t CRYPTO_subc_u64(uint64_t x, uint64_t y, uint64_t borrow,
1275
1280
  #define CRYPTO_subc_w CRYPTO_subc_u32
1276
1281
  #endif
1277
1282
 
1283
+ #endif // !__cplusplus
1284
+
1278
1285
 
1279
1286
  // FIPS functions.
1280
1287
 
@@ -341,8 +341,6 @@ struct x509_store_st {
341
341
 
342
342
  // Callbacks for various operations
343
343
  X509_STORE_CTX_verify_cb verify_cb; // error callback
344
- X509_STORE_CTX_get_crl_fn get_crl; // retrieve CRL
345
- X509_STORE_CTX_check_crl_fn check_crl; // Check CRL validity
346
344
 
347
345
  CRYPTO_refcount_t references;
348
346
  } /* X509_STORE */;
@@ -374,8 +372,6 @@ struct x509_store_ctx_st {
374
372
 
375
373
  // Callbacks for various operations
376
374
  X509_STORE_CTX_verify_cb verify_cb; // error callback
377
- X509_STORE_CTX_get_crl_fn get_crl; // retrieve CRL
378
- X509_STORE_CTX_check_crl_fn check_crl; // Check CRL validity
379
375
 
380
376
  // The following is built up
381
377
  int last_untrusted; // index of last untrusted cert
@@ -82,10 +82,10 @@ static void str_free(OPENSSL_STRING str);
82
82
  static int append_ia5(STACK_OF(OPENSSL_STRING) **sk,
83
83
  const ASN1_IA5STRING *email);
84
84
 
85
- static int ipv4_from_asc(unsigned char v4[4], const char *in);
86
- static int ipv6_from_asc(unsigned char v6[16], const char *in);
85
+ static int ipv4_from_asc(uint8_t v4[4], const char *in);
86
+ static int ipv6_from_asc(uint8_t v6[16], const char *in);
87
87
  static int ipv6_cb(const char *elem, size_t len, void *usr);
88
- static int ipv6_hex(unsigned char *out, const char *in, size_t inlen);
88
+ static int ipv6_hex(uint8_t *out, const char *in, size_t inlen);
89
89
 
90
90
  // Add a CONF_VALUE name value pair to stack
91
91
 
@@ -1154,7 +1154,7 @@ err:
1154
1154
  return NULL;
1155
1155
  }
1156
1156
 
1157
- int x509v3_a2i_ipadd(unsigned char ipout[16], const char *ipasc) {
1157
+ int x509v3_a2i_ipadd(uint8_t ipout[16], const char *ipasc) {
1158
1158
  // If string contains a ':' assume IPv6
1159
1159
 
1160
1160
  if (strchr(ipasc, ':')) {
@@ -1170,25 +1170,58 @@ int x509v3_a2i_ipadd(unsigned char ipout[16], const char *ipasc) {
1170
1170
  }
1171
1171
  }
1172
1172
 
1173
- static int ipv4_from_asc(unsigned char v4[4], const char *in) {
1174
- int a0, a1, a2, a3;
1175
- if (sscanf(in, "%d.%d.%d.%d", &a0, &a1, &a2, &a3) != 4) {
1173
+ // get_ipv4_component consumes one IPv4 component, terminated by either '.' or
1174
+ // the end of the string, from |*str|. On success, it returns one, sets |*out|
1175
+ // to the component, and advances |*str| to the first unconsumed character. On
1176
+ // invalid input, it returns zero.
1177
+ static int get_ipv4_component(uint8_t *out_byte, const char **str) {
1178
+ // Store a slightly larger intermediary so the overflow check is easier.
1179
+ uint32_t out = 0;
1180
+ for (;;) {
1181
+ if (!OPENSSL_isdigit(**str)) {
1182
+ return 0;
1183
+ }
1184
+ out = (out * 10) + (**str - '0');
1185
+ if (out > 255) {
1186
+ // Components must be 8-bit.
1187
+ return 0;
1188
+ }
1189
+ (*str)++;
1190
+ if ((**str) == '.' || (**str) == '\0') {
1191
+ *out_byte = (uint8_t)out;
1192
+ return 1;
1193
+ }
1194
+ if (out == 0) {
1195
+ // Reject extra leading zeros. Parsers sometimes treat them as octal, so
1196
+ // accepting them would misinterpret input.
1197
+ return 0;
1198
+ }
1199
+ }
1200
+ }
1201
+
1202
+ // get_ipv4_dot consumes a '.' from |*str| and advances it. It returns one on
1203
+ // success and zero if |*str| does not point to a '.'.
1204
+ static int get_ipv4_dot(const char **str) {
1205
+ if (**str != '.') {
1176
1206
  return 0;
1177
1207
  }
1178
- if ((a0 < 0) || (a0 > 255) || (a1 < 0) || (a1 > 255) || (a2 < 0) ||
1179
- (a2 > 255) || (a3 < 0) || (a3 > 255)) {
1208
+ (*str)++;
1209
+ return 1;
1210
+ }
1211
+
1212
+ static int ipv4_from_asc(uint8_t v4[4], const char *in) {
1213
+ if (!get_ipv4_component(&v4[0], &in) || !get_ipv4_dot(&in) ||
1214
+ !get_ipv4_component(&v4[1], &in) || !get_ipv4_dot(&in) ||
1215
+ !get_ipv4_component(&v4[2], &in) || !get_ipv4_dot(&in) ||
1216
+ !get_ipv4_component(&v4[3], &in) || *in != '\0') {
1180
1217
  return 0;
1181
1218
  }
1182
- v4[0] = a0;
1183
- v4[1] = a1;
1184
- v4[2] = a2;
1185
- v4[3] = a3;
1186
1219
  return 1;
1187
1220
  }
1188
1221
 
1189
1222
  typedef struct {
1190
1223
  // Temporary store for IPV6 output
1191
- unsigned char tmp[16];
1224
+ uint8_t tmp[16];
1192
1225
  // Total number of bytes in tmp
1193
1226
  int total;
1194
1227
  // The position of a zero (corresponding to '::')
@@ -1197,7 +1230,7 @@ typedef struct {
1197
1230
  int zero_cnt;
1198
1231
  } IPV6_STAT;
1199
1232
 
1200
- static int ipv6_from_asc(unsigned char v6[16], const char *in) {
1233
+ static int ipv6_from_asc(uint8_t v6[16], const char *in) {
1201
1234
  IPV6_STAT v6stat;
1202
1235
  v6stat.total = 0;
1203
1236
  v6stat.zero_pos = -1;
@@ -1305,7 +1338,7 @@ static int ipv6_cb(const char *elem, size_t len, void *usr) {
1305
1338
 
1306
1339
  // Convert a string of up to 4 hex digits into the corresponding IPv6 form.
1307
1340
 
1308
- static int ipv6_hex(unsigned char *out, const char *in, size_t inlen) {
1341
+ static int ipv6_hex(uint8_t *out, const char *in, size_t inlen) {
1309
1342
  if (inlen > 4) {
1310
1343
  return 0;
1311
1344
  }
@@ -594,16 +594,6 @@ void X509_STORE_set_verify_cb(X509_STORE *ctx,
594
594
  ctx->verify_cb = verify_cb;
595
595
  }
596
596
 
597
- void X509_STORE_set_get_crl(X509_STORE *ctx,
598
- X509_STORE_CTX_get_crl_fn get_crl) {
599
- ctx->get_crl = get_crl;
600
- }
601
-
602
- void X509_STORE_set_check_crl(X509_STORE *ctx,
603
- X509_STORE_CTX_check_crl_fn check_crl) {
604
- ctx->check_crl = check_crl;
605
- }
606
-
607
597
  X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx) {
608
598
  return ctx->ctx;
609
599
  }
@@ -117,6 +117,7 @@ static int get_crl(X509_STORE_CTX *ctx, X509_CRL **pcrl, X509 *x);
117
117
  static int crl_akid_check(X509_STORE_CTX *ctx, X509_CRL *crl, X509 **pissuer,
118
118
  int *pcrl_score);
119
119
  static int crl_crldp_check(X509 *x, X509_CRL *crl, int crl_score);
120
+ static int check_crl(X509_STORE_CTX *ctx, X509_CRL *crl);
120
121
  static int cert_crl(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x);
121
122
 
122
123
  static int internal_verify(X509_STORE_CTX *ctx);
@@ -769,17 +770,18 @@ static int check_cert(X509_STORE_CTX *ctx) {
769
770
  // Try to retrieve the relevant CRL. Note that |get_crl| sets
770
771
  // |current_crl_issuer| and |current_crl_score|, which |check_crl| then reads.
771
772
  //
772
- // TODO(davidben): Remove these callbacks. gRPC currently sets them, but
773
- // implements them incorrectly. It is not actually possible to implement
774
- // |get_crl| from outside the library.
775
- if (!ctx->get_crl(ctx, &crl, x)) {
773
+ // TODO(davidben): The awkward internal calling convention is a historical
774
+ // artifact of when these functions were user-overridable callbacks, even
775
+ // though there was no way to set them correctly. These callbacks have since
776
+ // been removed, so we can pass input and output parameters more directly.
777
+ if (!get_crl(ctx, &crl, x)) {
776
778
  ctx->error = X509_V_ERR_UNABLE_TO_GET_CRL;
777
779
  ok = call_verify_cb(0, ctx);
778
780
  goto err;
779
781
  }
780
782
 
781
783
  ctx->current_crl = crl;
782
- if (!ctx->check_crl(ctx, crl) || //
784
+ if (!check_crl(ctx, crl) || //
783
785
  !cert_crl(ctx, crl, x)) {
784
786
  goto err;
785
787
  }
@@ -1560,18 +1562,6 @@ int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, X509 *x509,
1560
1562
  ctx->verify_cb = null_callback;
1561
1563
  }
1562
1564
 
1563
- if (store->get_crl) {
1564
- ctx->get_crl = store->get_crl;
1565
- } else {
1566
- ctx->get_crl = get_crl;
1567
- }
1568
-
1569
- if (store->check_crl) {
1570
- ctx->check_crl = store->check_crl;
1571
- } else {
1572
- ctx->check_crl = check_crl;
1573
- }
1574
-
1575
1565
  return 1;
1576
1566
 
1577
1567
  err:
@@ -714,33 +714,35 @@ OPENSSL_EXPORT void BIO_meth_free(BIO_METHOD *method);
714
714
  // and returns one. The function should return one on success and zero on
715
715
  // error.
716
716
  OPENSSL_EXPORT int BIO_meth_set_create(BIO_METHOD *method,
717
- int (*create)(BIO *));
717
+ int (*create_func)(BIO *));
718
718
 
719
719
  // BIO_meth_set_destroy sets a function to release data associated with a |BIO|
720
720
  // and returns one. The function's return value is ignored.
721
721
  OPENSSL_EXPORT int BIO_meth_set_destroy(BIO_METHOD *method,
722
- int (*destroy)(BIO *));
722
+ int (*destroy_func)(BIO *));
723
723
 
724
724
  // BIO_meth_set_write sets the implementation of |BIO_write| for |method| and
725
725
  // returns one. |BIO_METHOD|s which implement |BIO_write| should also implement
726
726
  // |BIO_CTRL_FLUSH|. (See |BIO_meth_set_ctrl|.)
727
727
  OPENSSL_EXPORT int BIO_meth_set_write(BIO_METHOD *method,
728
- int (*write)(BIO *, const char *, int));
728
+ int (*write_func)(BIO *, const char *,
729
+ int));
729
730
 
730
731
  // BIO_meth_set_read sets the implementation of |BIO_read| for |method| and
731
732
  // returns one.
732
733
  OPENSSL_EXPORT int BIO_meth_set_read(BIO_METHOD *method,
733
- int (*read)(BIO *, char *, int));
734
+ int (*read_func)(BIO *, char *, int));
734
735
 
735
736
  // BIO_meth_set_gets sets the implementation of |BIO_gets| for |method| and
736
737
  // returns one.
737
738
  OPENSSL_EXPORT int BIO_meth_set_gets(BIO_METHOD *method,
738
- int (*gets)(BIO *, char *, int));
739
+ int (*gets_func)(BIO *, char *, int));
739
740
 
740
741
  // BIO_meth_set_ctrl sets the implementation of |BIO_ctrl| for |method| and
741
742
  // returns one.
742
743
  OPENSSL_EXPORT int BIO_meth_set_ctrl(BIO_METHOD *method,
743
- long (*ctrl)(BIO *, int, long, void *));
744
+ long (*ctrl_func)(BIO *, int, long,
745
+ void *));
744
746
 
745
747
  // BIO_set_data sets custom data on |bio|. It may be retried with
746
748
  // |BIO_get_data|.
@@ -178,6 +178,9 @@ OPENSSL_EXPORT int FIPS_mode_set(int on);
178
178
  // FIPS_module_name returns the name of the FIPS module.
179
179
  OPENSSL_EXPORT const char *FIPS_module_name(void);
180
180
 
181
+ // FIPS_module_hash returns the 32-byte hash of the FIPS module.
182
+ OPENSSL_EXPORT const uint8_t* FIPS_module_hash(void);
183
+
181
184
  // FIPS_version returns the version of the FIPS module, or zero if the build
182
185
  // isn't exactly at a verified version. The version, expressed in base 10, will
183
186
  // be a date in the form yyyymmddXX where XX is often "00", but can be