grpc 1.40.0.pre1 → 1.41.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (900) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +29 -37
  3. data/etc/roots.pem +335 -326
  4. data/include/grpc/byte_buffer.h +1 -1
  5. data/include/grpc/byte_buffer_reader.h +1 -1
  6. data/include/grpc/event_engine/endpoint_config.h +6 -11
  7. data/include/grpc/event_engine/event_engine.h +63 -58
  8. data/include/grpc/event_engine/port.h +1 -3
  9. data/include/grpc/event_engine/slice_allocator.h +6 -1
  10. data/include/grpc/fork.h +1 -1
  11. data/include/grpc/grpc.h +10 -4
  12. data/include/grpc/grpc_posix.h +5 -2
  13. data/include/grpc/impl/codegen/atm.h +5 -3
  14. data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
  15. data/include/grpc/impl/codegen/atm_gcc_sync.h +2 -0
  16. data/include/grpc/impl/codegen/atm_windows.h +2 -0
  17. data/include/grpc/impl/codegen/byte_buffer.h +2 -0
  18. data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -0
  19. data/include/grpc/impl/codegen/compression_types.h +2 -0
  20. data/include/grpc/impl/codegen/connectivity_state.h +2 -0
  21. data/include/grpc/impl/codegen/fork.h +2 -0
  22. data/include/grpc/impl/codegen/gpr_slice.h +2 -0
  23. data/include/grpc/impl/codegen/gpr_types.h +2 -0
  24. data/include/grpc/impl/codegen/grpc_types.h +4 -5
  25. data/include/grpc/impl/codegen/log.h +2 -0
  26. data/include/grpc/impl/codegen/port_platform.h +26 -22
  27. data/include/grpc/impl/codegen/propagation_bits.h +2 -0
  28. data/include/grpc/impl/codegen/slice.h +2 -0
  29. data/include/grpc/impl/codegen/status.h +2 -0
  30. data/include/grpc/impl/codegen/sync.h +8 -5
  31. data/include/grpc/impl/codegen/sync_abseil.h +2 -0
  32. data/include/grpc/impl/codegen/sync_custom.h +2 -0
  33. data/include/grpc/impl/codegen/sync_generic.h +3 -0
  34. data/include/grpc/impl/codegen/sync_posix.h +4 -2
  35. data/include/grpc/impl/codegen/sync_windows.h +2 -0
  36. data/include/grpc/slice.h +1 -1
  37. data/include/grpc/status.h +1 -1
  38. data/include/grpc/support/atm.h +1 -1
  39. data/include/grpc/support/atm_gcc_atomic.h +1 -1
  40. data/include/grpc/support/atm_gcc_sync.h +1 -1
  41. data/include/grpc/support/atm_windows.h +1 -1
  42. data/include/grpc/support/log.h +1 -1
  43. data/include/grpc/support/port_platform.h +1 -1
  44. data/include/grpc/support/sync.h +1 -1
  45. data/include/grpc/support/sync_abseil.h +1 -1
  46. data/include/grpc/support/sync_custom.h +1 -1
  47. data/include/grpc/support/sync_generic.h +1 -1
  48. data/include/grpc/support/sync_posix.h +1 -1
  49. data/include/grpc/support/sync_windows.h +1 -1
  50. data/include/grpc/support/time.h +2 -2
  51. data/src/core/ext/filters/census/grpc_context.cc +1 -0
  52. data/src/core/ext/filters/client_channel/backend_metric.cc +0 -1
  53. data/src/core/ext/filters/client_channel/backup_poller.h +1 -0
  54. data/src/core/ext/filters/client_channel/channel_connectivity.cc +1 -2
  55. data/src/core/ext/filters/client_channel/client_channel.cc +24 -52
  56. data/src/core/ext/filters/client_channel/client_channel.h +3 -3
  57. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -5
  58. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
  59. data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -0
  60. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -1
  61. data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
  62. data/src/core/ext/filters/client_channel/health/health_check_client.cc +7 -6
  63. data/src/core/ext/filters/client_channel/health/health_check_client.h +4 -3
  64. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +8 -7
  65. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -2
  66. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +2 -2
  67. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +2 -8
  68. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -2
  69. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +2 -2
  70. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -2
  71. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -1
  72. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +14 -23
  73. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +1 -0
  74. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +2 -2
  75. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +2 -8
  76. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +15 -18
  77. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +10 -7
  78. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -8
  79. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +2 -3
  80. data/src/core/ext/filters/client_channel/lb_policy.h +11 -44
  81. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -7
  82. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +2 -10
  83. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -0
  84. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -3
  85. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +6 -5
  86. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +14 -19
  87. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -0
  88. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +2 -2
  89. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +5 -5
  90. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +5 -8
  91. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +2 -3
  92. data/src/core/ext/filters/client_channel/retry_filter.cc +16 -3
  93. data/src/core/ext/filters/client_idle/client_idle_filter.cc +36 -30
  94. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +8 -6
  95. data/src/core/ext/filters/fault_injection/service_config_parser.cc +6 -13
  96. data/src/core/ext/filters/http/client/http_client_filter.cc +3 -2
  97. data/src/core/ext/filters/http/client_authority_filter.cc +2 -1
  98. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +2 -1
  99. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +7 -8
  100. data/src/core/ext/filters/http/server/http_server_filter.cc +5 -3
  101. data/src/core/ext/filters/message_size/message_size_filter.cc +9 -13
  102. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
  103. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +29 -12
  104. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +2 -0
  105. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -3
  106. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +10 -6
  107. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +2 -3
  108. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +60 -37
  109. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -1
  110. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +12 -6
  111. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +5 -9
  112. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -1
  113. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
  114. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
  115. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +4 -3
  116. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +2 -2
  117. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +24 -30
  118. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +4 -1
  119. data/src/core/ext/transport/chttp2/transport/context_list.h +1 -2
  120. data/src/core/ext/transport/chttp2/transport/flow_control.cc +39 -23
  121. data/src/core/ext/transport/chttp2/transport/flow_control.h +9 -3
  122. data/src/core/ext/transport/chttp2/transport/frame_data.cc +7 -7
  123. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -0
  124. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -3
  125. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -0
  126. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -4
  127. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -0
  128. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +3 -5
  129. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -0
  130. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +36 -5
  131. data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -0
  132. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +12 -7
  133. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -0
  134. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
  135. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +272 -666
  136. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +236 -70
  137. data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +107 -0
  138. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +86 -0
  139. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +69 -0
  140. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +776 -1037
  141. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +48 -169
  142. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +159 -0
  143. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +130 -0
  144. data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +46 -0
  145. data/src/core/ext/transport/chttp2/transport/hpack_utils.h +30 -0
  146. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  147. data/src/core/ext/transport/chttp2/transport/internal.h +2 -2
  148. data/src/core/ext/transport/chttp2/transport/parsing.cc +20 -30
  149. data/src/core/ext/transport/chttp2/transport/popularity_count.h +60 -0
  150. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -2
  151. data/src/core/ext/transport/chttp2/transport/varint.cc +7 -3
  152. data/src/core/ext/transport/chttp2/transport/varint.h +39 -28
  153. data/src/core/ext/transport/chttp2/transport/writing.cc +32 -28
  154. data/src/core/ext/transport/inproc/inproc_transport.cc +6 -4
  155. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +96 -96
  156. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +221 -89
  157. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +1 -1
  158. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -1
  159. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +3 -3
  160. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +11 -5
  161. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +48 -48
  162. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +151 -61
  163. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +99 -99
  164. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +171 -69
  165. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +15 -15
  166. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +31 -13
  167. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +126 -127
  168. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +229 -101
  169. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +4 -4
  170. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +11 -5
  171. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +23 -23
  172. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +11 -5
  173. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +28 -28
  174. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +71 -29
  175. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +4 -4
  176. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +11 -5
  177. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +82 -82
  178. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +201 -81
  179. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +24 -24
  180. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +51 -21
  181. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +3 -3
  182. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +11 -5
  183. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +9 -9
  184. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +21 -9
  185. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +62 -62
  186. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +131 -53
  187. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +51 -51
  188. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +81 -33
  189. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +5 -5
  190. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +11 -5
  191. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +62 -62
  192. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +141 -57
  193. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +3 -3
  194. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +11 -5
  195. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +7 -7
  196. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +21 -9
  197. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +8 -8
  198. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +11 -5
  199. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +8 -8
  200. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +11 -5
  201. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +4 -4
  202. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +11 -5
  203. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +16 -16
  204. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +31 -13
  205. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +57 -22
  206. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +174 -17
  207. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +32 -32
  208. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +51 -21
  209. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +3 -3
  210. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +11 -5
  211. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -37
  212. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +61 -25
  213. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +40 -40
  214. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +71 -29
  215. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +9 -9
  216. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +11 -5
  217. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +5 -5
  218. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +21 -9
  219. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +30 -30
  220. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +81 -33
  221. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +41 -29
  222. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +141 -43
  223. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +46 -43
  224. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +88 -29
  225. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +18 -18
  226. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +31 -13
  227. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +281 -277
  228. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +569 -248
  229. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +10 -10
  230. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +31 -13
  231. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +6 -6
  232. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +21 -9
  233. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +3 -3
  234. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +11 -5
  235. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +13 -13
  236. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +51 -21
  237. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +23 -23
  238. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +31 -13
  239. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +9 -9
  240. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +11 -5
  241. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +115 -116
  242. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +191 -77
  243. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +1 -1
  244. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +1 -1
  245. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +46 -32
  246. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +118 -34
  247. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +12 -12
  248. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +31 -13
  249. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +44 -42
  250. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +108 -55
  251. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +2 -2
  252. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +11 -5
  253. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +2 -2
  254. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +11 -5
  255. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +42 -42
  256. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +61 -25
  257. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +2 -2
  258. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +11 -5
  259. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +2 -2
  260. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +11 -5
  261. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +9 -9
  262. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +21 -9
  263. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +2 -2
  264. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +11 -5
  265. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +2 -2
  266. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +11 -5
  267. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +28 -28
  268. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +51 -21
  269. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +8 -8
  270. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +41 -17
  271. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +9 -8
  272. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +25 -9
  273. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +4 -4
  274. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +11 -5
  275. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +4 -4
  276. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +11 -5
  277. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +3 -3
  278. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +11 -5
  279. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +9 -9
  280. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +31 -13
  281. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +10 -10
  282. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +21 -9
  283. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +6 -6
  284. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +21 -9
  285. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +11 -11
  286. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +31 -13
  287. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +15 -15
  288. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +71 -29
  289. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +19 -19
  290. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +51 -21
  291. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +1 -1
  292. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +1 -1
  293. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +6 -6
  294. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +21 -9
  295. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +10 -10
  296. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +31 -13
  297. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +5 -5
  298. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +11 -5
  299. data/src/core/ext/upb-generated/google/api/annotations.upb.c +1 -1
  300. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
  301. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +58 -58
  302. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +111 -45
  303. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +68 -68
  304. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +121 -49
  305. data/src/core/ext/upb-generated/google/api/http.upb.c +18 -18
  306. data/src/core/ext/upb-generated/google/api/http.upb.h +31 -13
  307. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +4 -4
  308. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +11 -5
  309. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +153 -153
  310. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +271 -109
  311. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +4 -4
  312. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +11 -5
  313. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +2 -2
  314. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +11 -5
  315. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +15 -15
  316. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +31 -13
  317. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +4 -4
  318. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +11 -5
  319. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +19 -19
  320. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +91 -37
  321. data/src/core/ext/upb-generated/google/rpc/status.upb.c +5 -5
  322. data/src/core/ext/upb-generated/google/rpc/status.upb.h +11 -5
  323. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +12 -12
  324. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +11 -5
  325. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +60 -60
  326. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +101 -41
  327. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +7 -7
  328. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +21 -9
  329. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +5 -5
  330. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +21 -9
  331. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +31 -31
  332. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +91 -37
  333. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +8 -8
  334. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +31 -13
  335. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +4 -4
  336. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +11 -5
  337. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +1 -1
  338. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -1
  339. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +4 -4
  340. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +11 -5
  341. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +3 -3
  342. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +11 -5
  343. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +13 -13
  344. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +11 -5
  345. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +4 -4
  346. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +11 -5
  347. data/src/core/ext/upb-generated/validate/validate.upb.c +220 -220
  348. data/src/core/ext/upb-generated/validate/validate.upb.h +231 -93
  349. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +3 -3
  350. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +11 -5
  351. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +8 -8
  352. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +21 -9
  353. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +6 -6
  354. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +11 -5
  355. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +5 -5
  356. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +11 -5
  357. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +11 -11
  358. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +21 -9
  359. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +6 -6
  360. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +11 -5
  361. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +384 -382
  362. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +94 -63
  363. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +10 -0
  364. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +30 -19
  365. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +5 -0
  366. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +791 -780
  367. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +96 -100
  368. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +133 -115
  369. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +5 -0
  370. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +178 -173
  371. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +14 -13
  372. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +103 -103
  373. data/src/core/ext/xds/certificate_provider_registry.cc +2 -2
  374. data/src/core/ext/xds/xds_api.cc +853 -990
  375. data/src/core/ext/xds/xds_api.h +16 -33
  376. data/src/core/ext/xds/xds_bootstrap.cc +27 -52
  377. data/src/core/ext/xds/xds_client.cc +69 -30
  378. data/src/core/ext/xds/xds_client_stats.cc +16 -15
  379. data/src/core/ext/xds/xds_client_stats.h +6 -6
  380. data/src/core/ext/xds/xds_http_fault_filter.cc +4 -3
  381. data/src/core/ext/xds/xds_http_fault_filter.h +3 -2
  382. data/src/core/ext/xds/xds_http_filters.cc +1 -0
  383. data/src/core/ext/xds/xds_server_config_fetcher.cc +10 -10
  384. data/src/core/lib/address_utils/parse_address.cc +4 -8
  385. data/src/core/lib/address_utils/sockaddr_utils.cc +2 -2
  386. data/src/core/lib/channel/channel_args.cc +2 -1
  387. data/src/core/lib/channel/channel_stack.cc +5 -3
  388. data/src/core/lib/channel/channel_stack_builder.cc +1 -11
  389. data/src/core/lib/channel/channel_stack_builder.h +0 -8
  390. data/src/core/lib/channel/channel_trace.cc +4 -3
  391. data/src/core/lib/channel/channel_trace.h +1 -0
  392. data/src/core/lib/channel/channelz.cc +40 -36
  393. data/src/core/lib/channel/channelz.h +27 -27
  394. data/src/core/lib/channel/channelz_registry.cc +7 -6
  395. data/src/core/lib/channel/connected_channel.cc +1 -0
  396. data/src/core/lib/channel/handshaker.cc +2 -1
  397. data/src/core/lib/channel/handshaker.h +1 -2
  398. data/src/core/lib/channel/handshaker_factory.h +10 -2
  399. data/src/core/lib/channel/handshaker_registry.cc +15 -70
  400. data/src/core/lib/channel/handshaker_registry.h +29 -12
  401. data/src/core/lib/channel/status_util.h +2 -2
  402. data/src/core/lib/compression/algorithm_metadata.h +1 -0
  403. data/src/core/lib/compression/compression_args.cc +2 -1
  404. data/src/core/lib/compression/compression_internal.cc +2 -4
  405. data/src/core/lib/compression/message_compress.cc +2 -2
  406. data/src/core/lib/compression/stream_compression.cc +2 -1
  407. data/src/core/lib/compression/stream_compression.h +2 -1
  408. data/src/core/lib/compression/stream_compression_gzip.cc +2 -1
  409. data/src/core/lib/compression/stream_compression_identity.cc +2 -1
  410. data/src/core/lib/config/core_configuration.cc +54 -0
  411. data/src/core/lib/config/core_configuration.h +108 -0
  412. data/src/core/lib/debug/stats.h +1 -0
  413. data/src/core/lib/debug/stats_data.cc +2 -1
  414. data/src/core/lib/debug/stats_data.h +1 -0
  415. data/src/core/lib/debug/trace.cc +1 -0
  416. data/src/core/lib/debug/trace.h +2 -1
  417. data/src/core/lib/event_engine/endpoint_config.cc +0 -1
  418. data/src/core/lib/event_engine/event_engine.cc +3 -3
  419. data/src/core/lib/event_engine/sockaddr.cc +3 -3
  420. data/src/core/lib/gpr/alloc.cc +4 -3
  421. data/src/core/lib/gpr/env_linux.cc +1 -2
  422. data/src/core/lib/gpr/env_posix.cc +2 -3
  423. data/src/core/lib/gpr/log.cc +3 -3
  424. data/src/core/lib/gpr/log_android.cc +3 -2
  425. data/src/core/lib/gpr/log_linux.cc +7 -4
  426. data/src/core/lib/gpr/log_posix.cc +6 -3
  427. data/src/core/lib/gpr/string.h +2 -2
  428. data/src/core/lib/gpr/sync.cc +2 -2
  429. data/src/core/lib/gpr/sync_abseil.cc +7 -6
  430. data/src/core/lib/gpr/sync_posix.cc +3 -3
  431. data/src/core/lib/gpr/time.cc +3 -2
  432. data/src/core/lib/gpr/time_windows.cc +3 -2
  433. data/src/core/lib/gpr/tls.h +120 -41
  434. data/src/core/lib/gpr/tmpfile_posix.cc +1 -2
  435. data/src/core/lib/gprpp/arena.cc +2 -1
  436. data/src/core/lib/gprpp/arena.h +5 -5
  437. data/src/core/lib/gprpp/atomic_utils.h +47 -0
  438. data/src/core/lib/gprpp/bitset.h +166 -0
  439. data/src/core/lib/gprpp/construct_destruct.h +39 -0
  440. data/src/core/lib/gprpp/dual_ref_counted.h +25 -26
  441. data/src/core/lib/gprpp/fork.cc +14 -12
  442. data/src/core/lib/gprpp/fork.h +4 -4
  443. data/src/core/lib/gprpp/global_config.h +1 -2
  444. data/src/core/lib/gprpp/global_config_env.cc +7 -7
  445. data/src/core/lib/gprpp/global_config_generic.h +2 -2
  446. data/src/core/lib/gprpp/manual_constructor.h +8 -5
  447. data/src/core/lib/gprpp/match.h +73 -0
  448. data/src/core/lib/gprpp/memory.h +3 -3
  449. data/src/core/lib/gprpp/mpscq.cc +7 -7
  450. data/src/core/lib/gprpp/mpscq.h +6 -5
  451. data/src/core/lib/gprpp/orphanable.h +3 -3
  452. data/src/core/lib/gprpp/overload.h +59 -0
  453. data/src/core/lib/gprpp/ref_counted.h +18 -18
  454. data/src/core/lib/gprpp/status_helper.cc +4 -4
  455. data/src/core/lib/gprpp/sync.h +3 -1
  456. data/src/core/lib/gprpp/thd_posix.cc +5 -5
  457. data/src/core/lib/gprpp/thd_windows.cc +4 -11
  458. data/src/core/lib/gprpp/time_util.cc +2 -2
  459. data/src/core/lib/gprpp/time_util.h +2 -2
  460. data/src/core/lib/http/format_request.cc +1 -0
  461. data/src/core/lib/http/format_request.h +1 -0
  462. data/src/core/lib/http/httpcli.cc +9 -9
  463. data/src/core/lib/http/httpcli.h +3 -0
  464. data/src/core/lib/http/httpcli_security_connector.cc +5 -8
  465. data/src/core/lib/http/parser.h +1 -0
  466. data/src/core/lib/iomgr/buffer_list.cc +2 -1
  467. data/src/core/lib/iomgr/buffer_list.h +1 -2
  468. data/src/core/lib/iomgr/call_combiner.cc +1 -0
  469. data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
  470. data/src/core/lib/iomgr/combiner.cc +3 -2
  471. data/src/core/lib/iomgr/combiner.h +1 -0
  472. data/src/core/lib/iomgr/dualstack_socket_posix.cc +1 -0
  473. data/src/core/lib/iomgr/endpoint.cc +0 -4
  474. data/src/core/lib/iomgr/endpoint.h +1 -3
  475. data/src/core/lib/iomgr/endpoint_cfstream.cc +9 -20
  476. data/src/core/lib/iomgr/endpoint_cfstream.h +1 -1
  477. data/src/core/lib/iomgr/endpoint_pair.h +1 -0
  478. data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +1 -2
  479. data/src/core/lib/iomgr/endpoint_pair_posix.cc +15 -11
  480. data/src/core/lib/iomgr/endpoint_pair_windows.cc +17 -9
  481. data/src/core/lib/iomgr/error.h +23 -9
  482. data/src/core/lib/iomgr/error_cfstream.cc +2 -2
  483. data/src/core/lib/iomgr/error_internal.h +1 -0
  484. data/src/core/lib/iomgr/ev_epoll1_linux.cc +14 -22
  485. data/src/core/lib/iomgr/ev_epollex_linux.cc +15 -22
  486. data/src/core/lib/iomgr/ev_poll_posix.cc +13 -25
  487. data/src/core/lib/iomgr/ev_posix.cc +1 -2
  488. data/src/core/lib/iomgr/event_engine/endpoint.cc +3 -22
  489. data/src/core/lib/iomgr/event_engine/endpoint.h +1 -2
  490. data/src/core/lib/iomgr/event_engine/iomgr.cc +17 -18
  491. data/src/core/lib/iomgr/event_engine/iomgr.h +20 -2
  492. data/src/core/lib/iomgr/event_engine/resolver.cc +2 -1
  493. data/src/core/lib/iomgr/event_engine/tcp.cc +53 -24
  494. data/src/core/lib/iomgr/exec_ctx.cc +3 -4
  495. data/src/core/lib/iomgr/exec_ctx.h +11 -19
  496. data/src/core/lib/iomgr/executor/mpmcqueue.cc +10 -9
  497. data/src/core/lib/iomgr/executor/mpmcqueue.h +4 -3
  498. data/src/core/lib/iomgr/executor/threadpool.cc +2 -2
  499. data/src/core/lib/iomgr/executor/threadpool.h +2 -1
  500. data/src/core/lib/iomgr/executor.cc +5 -6
  501. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -2
  502. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +2 -2
  503. data/src/core/lib/iomgr/internal_errqueue.cc +3 -2
  504. data/src/core/lib/iomgr/iocp_windows.cc +1 -0
  505. data/src/core/lib/iomgr/iomgr.h +2 -2
  506. data/src/core/lib/iomgr/iomgr_custom.cc +2 -2
  507. data/src/core/lib/iomgr/iomgr_custom.h +2 -2
  508. data/src/core/lib/iomgr/iomgr_internal.cc +2 -1
  509. data/src/core/lib/iomgr/iomgr_windows.cc +1 -2
  510. data/src/core/lib/iomgr/is_epollexclusive_available.cc +4 -4
  511. data/src/core/lib/iomgr/polling_entity.cc +2 -2
  512. data/src/core/lib/iomgr/pollset_custom.cc +3 -4
  513. data/src/core/lib/iomgr/pollset_custom.h +2 -2
  514. data/src/core/lib/iomgr/pollset_set_custom.cc +1 -2
  515. data/src/core/lib/iomgr/pollset_set_windows.cc +1 -0
  516. data/src/core/lib/iomgr/port.h +0 -5
  517. data/src/core/lib/iomgr/python_util.h +1 -0
  518. data/src/core/lib/iomgr/resolve_address.cc +2 -1
  519. data/src/core/lib/iomgr/resolve_address.h +0 -4
  520. data/src/core/lib/iomgr/resolve_address_custom.cc +4 -4
  521. data/src/core/lib/iomgr/resolve_address_custom.h +0 -1
  522. data/src/core/lib/iomgr/resolve_address_posix.cc +2 -4
  523. data/src/core/lib/iomgr/resolve_address_windows.cc +6 -8
  524. data/src/core/lib/iomgr/resource_quota.cc +127 -42
  525. data/src/core/lib/iomgr/resource_quota.h +66 -17
  526. data/src/core/lib/iomgr/sockaddr.h +1 -1
  527. data/src/core/lib/iomgr/socket_factory_posix.cc +3 -3
  528. data/src/core/lib/iomgr/socket_factory_posix.h +1 -0
  529. data/src/core/lib/iomgr/socket_mutator.h +2 -2
  530. data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -3
  531. data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
  532. data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
  533. data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
  534. data/src/core/lib/iomgr/socket_utils_windows.cc +2 -2
  535. data/src/core/lib/iomgr/tcp_client.cc +4 -2
  536. data/src/core/lib/iomgr/tcp_client.h +4 -0
  537. data/src/core/lib/iomgr/tcp_client_cfstream.cc +9 -19
  538. data/src/core/lib/iomgr/tcp_client_custom.cc +9 -17
  539. data/src/core/lib/iomgr/tcp_client_posix.cc +24 -9
  540. data/src/core/lib/iomgr/tcp_client_posix.h +5 -2
  541. data/src/core/lib/iomgr/tcp_client_windows.cc +14 -6
  542. data/src/core/lib/iomgr/tcp_custom.cc +11 -23
  543. data/src/core/lib/iomgr/tcp_custom.h +2 -1
  544. data/src/core/lib/iomgr/tcp_posix.cc +29 -59
  545. data/src/core/lib/iomgr/tcp_posix.h +11 -12
  546. data/src/core/lib/iomgr/tcp_server.cc +6 -4
  547. data/src/core/lib/iomgr/tcp_server.h +12 -9
  548. data/src/core/lib/iomgr/tcp_server_custom.cc +15 -33
  549. data/src/core/lib/iomgr/tcp_server_posix.cc +20 -13
  550. data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -0
  551. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -2
  552. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +3 -4
  553. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  554. data/src/core/lib/iomgr/tcp_server_windows.cc +13 -9
  555. data/src/core/lib/iomgr/tcp_windows.cc +6 -25
  556. data/src/core/lib/iomgr/tcp_windows.h +2 -1
  557. data/src/core/lib/iomgr/timer.cc +1 -0
  558. data/src/core/lib/iomgr/timer.h +1 -2
  559. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  560. data/src/core/lib/iomgr/timer_generic.cc +8 -38
  561. data/src/core/lib/iomgr/timer_generic.h +1 -0
  562. data/src/core/lib/iomgr/timer_heap.cc +1 -2
  563. data/src/core/lib/iomgr/udp_server.cc +1 -2
  564. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -5
  565. data/src/core/lib/iomgr/unix_sockets_posix.h +2 -3
  566. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -0
  567. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -3
  568. data/src/core/lib/iomgr/wakeup_fd_posix.cc +1 -0
  569. data/src/core/lib/iomgr/work_serializer.cc +4 -4
  570. data/src/core/lib/iomgr/work_serializer.h +1 -1
  571. data/src/core/lib/json/json_reader.cc +9 -17
  572. data/src/core/lib/json/json_util.h +18 -26
  573. data/src/core/lib/matchers/matchers.h +0 -1
  574. data/src/core/lib/profiling/basic_timers.cc +8 -6
  575. data/src/core/lib/profiling/stap_timers.cc +2 -2
  576. data/src/core/lib/security/authorization/authorization_policy_provider.h +5 -4
  577. data/src/core/lib/security/authorization/evaluate_args.cc +2 -0
  578. data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +159 -0
  579. data/src/core/lib/security/authorization/sdk_server_authz_filter.h +67 -0
  580. data/src/core/lib/security/context/security_context.cc +7 -6
  581. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +2 -2
  582. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
  583. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +2 -2
  584. data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -3
  585. data/src/core/lib/security/credentials/credentials.cc +6 -6
  586. data/src/core/lib/security/credentials/credentials.h +1 -1
  587. data/src/core/lib/security/credentials/credentials_metadata.cc +2 -3
  588. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +13 -26
  589. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -2
  590. data/src/core/lib/security/credentials/external/aws_request_signer.cc +3 -3
  591. data/src/core/lib/security/credentials/external/external_account_credentials.cc +13 -22
  592. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -4
  593. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -2
  594. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +55 -3
  595. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -1
  596. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
  597. data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
  598. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +31 -14
  599. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +11 -3
  600. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +0 -2
  601. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +3 -3
  602. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +3 -7
  603. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -0
  604. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -4
  605. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +4 -4
  606. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +0 -1
  607. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +3 -2
  608. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +10 -6
  609. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +2 -1
  610. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +7 -5
  611. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +2 -2
  612. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +4 -6
  613. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +1 -0
  614. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -3
  615. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -7
  616. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +1 -2
  617. data/src/core/lib/security/security_connector/ssl_utils.cc +2 -3
  618. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +9 -14
  619. data/src/core/lib/security/transport/auth_filters.h +1 -0
  620. data/src/core/lib/security/transport/client_auth_filter.cc +4 -6
  621. data/src/core/lib/security/transport/secure_endpoint.cc +4 -14
  622. data/src/core/lib/security/transport/secure_endpoint.h +1 -0
  623. data/src/core/lib/security/transport/security_handshaker.cc +5 -4
  624. data/src/core/lib/security/transport/security_handshaker.h +2 -1
  625. data/src/core/lib/security/util/json_util.cc +6 -8
  626. data/src/core/lib/slice/percent_encoding.cc +73 -30
  627. data/src/core/lib/slice/percent_encoding.h +29 -28
  628. data/src/core/lib/slice/slice.cc +14 -5
  629. data/src/core/lib/slice/slice_buffer.cc +1 -2
  630. data/src/core/lib/slice/slice_intern.cc +2 -3
  631. data/src/core/lib/slice/slice_internal.h +2 -2
  632. data/src/core/lib/surface/api_trace.cc +2 -1
  633. data/src/core/lib/surface/api_trace.h +1 -0
  634. data/src/core/lib/surface/byte_buffer_reader.cc +1 -1
  635. data/src/core/lib/surface/call.cc +9 -8
  636. data/src/core/lib/surface/call.h +3 -3
  637. data/src/core/lib/surface/call_details.cc +2 -2
  638. data/src/core/lib/surface/call_log_batch.cc +2 -2
  639. data/src/core/lib/surface/channel.cc +22 -9
  640. data/src/core/lib/surface/channel.h +14 -2
  641. data/src/core/lib/surface/channel_ping.cc +1 -2
  642. data/src/core/lib/surface/channel_stack_type.cc +2 -1
  643. data/src/core/lib/surface/completion_queue.cc +54 -64
  644. data/src/core/lib/surface/completion_queue_factory.cc +2 -1
  645. data/src/core/lib/surface/completion_queue_factory.h +1 -0
  646. data/src/core/lib/surface/event_string.cc +1 -0
  647. data/src/core/lib/surface/init.cc +4 -9
  648. data/src/core/lib/surface/init.h +0 -1
  649. data/src/core/lib/surface/init_secure.cc +23 -4
  650. data/src/core/lib/surface/lame_client.cc +6 -5
  651. data/src/core/lib/surface/metadata_array.cc +2 -2
  652. data/src/core/lib/surface/server.cc +17 -33
  653. data/src/core/lib/surface/server.h +11 -13
  654. data/src/core/lib/surface/validate_metadata.cc +44 -16
  655. data/src/core/lib/surface/version.cc +2 -2
  656. data/src/core/lib/transport/byte_stream.h +1 -0
  657. data/src/core/lib/transport/connectivity_state.cc +8 -5
  658. data/src/core/lib/transport/connectivity_state.h +2 -2
  659. data/src/core/lib/transport/error_utils.cc +1 -0
  660. data/src/core/lib/transport/metadata.cc +10 -10
  661. data/src/core/lib/transport/metadata.h +13 -11
  662. data/src/core/lib/transport/metadata_batch.cc +13 -2
  663. data/src/core/lib/transport/metadata_batch.h +15 -0
  664. data/src/core/lib/transport/transport_op_string.cc +2 -2
  665. data/src/core/plugin_registry/grpc_plugin_registry.cc +14 -0
  666. data/src/core/tsi/alts/crypt/aes_gcm.cc +3 -2
  667. data/src/core/tsi/alts/crypt/gsec.h +2 -3
  668. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +2 -2
  669. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +2 -3
  670. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +2 -2
  671. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +4 -3
  672. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -2
  673. data/src/core/tsi/ssl_transport_security.cc +11 -9
  674. data/src/core/tsi/ssl_transport_security.h +3 -1
  675. data/src/core/tsi/transport_security.cc +3 -3
  676. data/src/core/tsi/transport_security_grpc.h +1 -0
  677. data/src/ruby/ext/grpc/extconf.rb +1 -1
  678. data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
  679. data/src/ruby/ext/grpc/rb_call.c +5 -5
  680. data/src/ruby/ext/grpc/rb_call_credentials.c +5 -5
  681. data/src/ruby/ext/grpc/rb_channel.c +10 -8
  682. data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
  683. data/src/ruby/ext/grpc/rb_channel_credentials.c +4 -4
  684. data/src/ruby/ext/grpc/rb_channel_credentials.h +1 -0
  685. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
  686. data/src/ruby/ext/grpc/rb_compression_options.c +5 -4
  687. data/src/ruby/ext/grpc/rb_event_thread.c +4 -4
  688. data/src/ruby/ext/grpc/rb_grpc.c +5 -4
  689. data/src/ruby/ext/grpc/rb_grpc.h +1 -0
  690. data/src/ruby/ext/grpc/rb_server.c +6 -5
  691. data/src/ruby/ext/grpc/rb_server_credentials.c +3 -3
  692. data/src/ruby/ext/grpc/rb_server_credentials.h +1 -0
  693. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +8 -5
  694. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +3 -1
  695. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +6 -5
  696. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +3 -1
  697. data/src/ruby/lib/grpc/version.rb +1 -1
  698. data/third_party/boringssl-with-bazel/err_data.c +300 -292
  699. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +52 -47
  700. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
  701. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
  702. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
  703. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
  704. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +14 -7
  705. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
  706. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +269 -272
  707. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +6 -43
  708. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +3 -3
  709. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
  710. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +1 -40
  711. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
  712. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
  713. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
  714. data/third_party/boringssl-with-bazel/src/crypto/asn1/{asn1_locl.h → internal.h} +45 -1
  715. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +9 -9
  716. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +290 -199
  717. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +9 -9
  718. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -14
  719. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -1
  720. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
  721. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +11 -8
  722. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
  723. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
  724. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
  725. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
  726. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
  727. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
  728. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
  729. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
  730. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +45 -65
  731. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
  732. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +6 -3
  733. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +26 -9
  734. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
  735. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +5 -2
  736. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +10 -0
  737. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
  738. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +1 -1
  739. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
  740. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +5 -9
  741. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +2 -2
  742. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +4 -6
  743. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +24 -9
  744. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +4 -2
  745. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +34 -0
  746. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +219 -121
  747. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +9 -2
  748. data/third_party/boringssl-with-bazel/src/crypto/internal.h +23 -2
  749. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +253 -0
  750. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +28 -23
  751. data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -9
  752. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +7 -3
  753. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
  754. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
  755. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
  756. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
  757. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
  758. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
  759. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +9 -4
  760. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +151 -12
  761. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
  762. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +1 -1
  763. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +1 -0
  764. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +4 -0
  765. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
  766. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +4 -0
  767. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +15 -11
  768. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +1 -1
  769. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +1 -0
  770. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
  771. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +225 -2
  772. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
  773. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +15 -4
  774. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +10 -5
  775. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
  776. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +4 -2
  777. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +6 -23
  778. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +2 -2
  779. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
  780. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
  781. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +25 -22
  782. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +11 -54
  783. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -1
  784. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +1 -0
  785. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
  786. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +1 -3
  787. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -16
  788. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +9 -11
  789. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
  790. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +23 -21
  791. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +12 -11
  792. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +16 -0
  793. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -0
  794. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
  795. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +1 -1
  796. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -0
  797. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +4 -3
  798. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +24 -5
  799. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +17 -8
  800. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
  801. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +1 -0
  802. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +6 -6
  803. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
  804. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
  805. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +2 -0
  806. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
  807. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
  808. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -13
  809. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -0
  810. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +76 -31
  811. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +458 -260
  812. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +2 -9
  813. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -4
  814. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
  815. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
  816. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +9 -0
  817. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +8 -2
  818. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
  819. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +3 -0
  820. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +6 -0
  821. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
  822. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +25 -0
  823. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -12
  824. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +4 -205
  825. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +12 -3
  826. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +5 -4
  827. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
  828. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -5
  829. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +5 -0
  830. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +37 -15
  831. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +79 -13
  832. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -32
  833. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +234 -131
  834. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +0 -131
  835. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +48 -13
  836. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +9 -16
  837. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +310 -359
  838. data/third_party/boringssl-with-bazel/src/ssl/{t1_lib.cc → extensions.cc} +110 -159
  839. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +24 -13
  840. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +145 -142
  841. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +106 -99
  842. data/third_party/boringssl-with-bazel/src/ssl/internal.h +87 -48
  843. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +1 -2
  844. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
  845. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +11 -5
  846. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +2 -51
  847. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +121 -65
  848. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -12
  849. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -22
  850. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +14 -27
  851. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +210 -212
  852. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +30 -41
  853. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +48 -34
  854. data/third_party/upb/upb/decode.c +129 -60
  855. data/third_party/upb/upb/decode.h +32 -4
  856. data/third_party/upb/upb/decode_fast.c +513 -500
  857. data/third_party/upb/upb/decode_fast.h +27 -0
  858. data/third_party/upb/upb/{decode.int.h → decode_internal.h} +38 -8
  859. data/third_party/upb/upb/def.c +171 -181
  860. data/third_party/upb/upb/def.h +41 -19
  861. data/third_party/upb/upb/def.hpp +29 -0
  862. data/third_party/upb/upb/encode.c +49 -16
  863. data/third_party/upb/upb/encode.h +29 -2
  864. data/third_party/upb/upb/msg.c +169 -28
  865. data/third_party/upb/upb/msg.h +75 -580
  866. data/third_party/upb/upb/msg_internal.h +687 -0
  867. data/third_party/upb/upb/port_def.inc +85 -24
  868. data/third_party/upb/upb/port_undef.inc +38 -1
  869. data/third_party/upb/upb/reflection.c +29 -37
  870. data/third_party/upb/upb/reflection.h +36 -8
  871. data/third_party/upb/upb/reflection.hpp +37 -0
  872. data/third_party/upb/upb/table.c +211 -86
  873. data/third_party/upb/upb/{table.int.h → table_internal.h} +56 -180
  874. data/third_party/upb/upb/text_encode.c +32 -4
  875. data/third_party/upb/upb/text_encode.h +26 -0
  876. data/third_party/upb/upb/upb.c +59 -8
  877. data/third_party/upb/upb/upb.h +36 -6
  878. data/third_party/upb/upb/upb.hpp +24 -0
  879. data/third_party/upb/upb/upb_internal.h +58 -0
  880. metadata +70 -67
  881. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -179
  882. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
  883. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -243
  884. data/src/core/ext/transport/chttp2/transport/hpack_table.h +0 -148
  885. data/src/core/lib/gpr/tls_gcc.h +0 -52
  886. data/src/core/lib/gpr/tls_msvc.h +0 -54
  887. data/src/core/lib/gpr/tls_pthread.cc +0 -30
  888. data/src/core/lib/gpr/tls_pthread.h +0 -56
  889. data/src/core/lib/gpr/tls_stdcpp.h +0 -48
  890. data/src/core/lib/gprpp/atomic.h +0 -104
  891. data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
  892. data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
  893. data/src/core/lib/iomgr/pollset_uv.cc +0 -95
  894. data/src/core/lib/iomgr/pollset_uv.h +0 -36
  895. data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
  896. data/src/core/lib/iomgr/socket_utils_uv.cc +0 -49
  897. data/src/core/lib/iomgr/tcp_uv.cc +0 -421
  898. data/src/core/lib/iomgr/timer_uv.cc +0 -66
  899. data/third_party/upb/third_party/wyhash/wyhash.h +0 -145
  900. data/third_party/upb/upb/upb.int.h +0 -29
@@ -110,60 +110,26 @@ extern "C" {
110
110
  #define X509v3_KU_DECIPHER_ONLY 0x8000
111
111
  #define X509v3_KU_UNDEF 0xffff
112
112
 
113
+ struct X509_algor_st {
114
+ ASN1_OBJECT *algorithm;
115
+ ASN1_TYPE *parameter;
116
+ } /* X509_ALGOR */;
117
+
118
+ DECLARE_ASN1_FUNCTIONS(X509_ALGOR)
119
+
113
120
  DEFINE_STACK_OF(X509_ALGOR)
114
- DECLARE_ASN1_SET_OF(X509_ALGOR)
115
121
 
116
122
  typedef STACK_OF(X509_ALGOR) X509_ALGORS;
117
123
 
118
- struct X509_name_entry_st {
119
- ASN1_OBJECT *object;
120
- ASN1_STRING *value;
121
- int set;
122
- int size; // temp variable
123
- } /* X509_NAME_ENTRY */;
124
-
125
124
  DEFINE_STACK_OF(X509_NAME_ENTRY)
126
- DECLARE_ASN1_SET_OF(X509_NAME_ENTRY)
127
-
128
- // we always keep X509_NAMEs in 2 forms.
129
- struct X509_name_st {
130
- STACK_OF(X509_NAME_ENTRY) *entries;
131
- int modified; // true if 'bytes' needs to be built
132
- BUF_MEM *bytes;
133
- // unsigned long hash; Keep the hash around for lookups
134
- unsigned char *canon_enc;
135
- int canon_enclen;
136
- } /* X509_NAME */;
137
125
 
138
126
  DEFINE_STACK_OF(X509_NAME)
139
127
 
140
- struct X509_extension_st {
141
- ASN1_OBJECT *object;
142
- ASN1_BOOLEAN critical;
143
- ASN1_OCTET_STRING *value;
144
- } /* X509_EXTENSION */;
145
-
146
128
  typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS;
147
129
 
148
130
  DEFINE_STACK_OF(X509_EXTENSION)
149
- DECLARE_ASN1_SET_OF(X509_EXTENSION)
150
131
 
151
132
  DEFINE_STACK_OF(X509_ATTRIBUTE)
152
- DECLARE_ASN1_SET_OF(X509_ATTRIBUTE)
153
-
154
- struct x509_cinf_st {
155
- ASN1_INTEGER *version; // [ 0 ] default of v1
156
- ASN1_INTEGER *serialNumber;
157
- X509_ALGOR *signature;
158
- X509_NAME *issuer;
159
- X509_VAL *validity;
160
- X509_NAME *subject;
161
- X509_PUBKEY *key;
162
- ASN1_BIT_STRING *issuerUID; // [ 1 ] optional in v2
163
- ASN1_BIT_STRING *subjectUID; // [ 2 ] optional in v2
164
- STACK_OF(X509_EXTENSION) *extensions; // [ 3 ] optional in v3
165
- ASN1_ENCODING enc;
166
- } /* X509_CINF */;
167
133
 
168
134
  // This stuff is certificate "auxiliary info"
169
135
  // it contains details which are useful in certificate
@@ -173,33 +139,7 @@ struct x509_cinf_st {
173
139
  DECLARE_STACK_OF(DIST_POINT)
174
140
  DECLARE_STACK_OF(GENERAL_NAME)
175
141
 
176
- struct x509_st {
177
- X509_CINF *cert_info;
178
- X509_ALGOR *sig_alg;
179
- ASN1_BIT_STRING *signature;
180
- CRYPTO_refcount_t references;
181
- CRYPTO_EX_DATA ex_data;
182
- // These contain copies of various extension values
183
- long ex_pathlen;
184
- long ex_pcpathlen;
185
- unsigned long ex_flags;
186
- unsigned long ex_kusage;
187
- unsigned long ex_xkusage;
188
- unsigned long ex_nscert;
189
- ASN1_OCTET_STRING *skid;
190
- AUTHORITY_KEYID *akid;
191
- X509_POLICY_CACHE *policy_cache;
192
- STACK_OF(DIST_POINT) *crldp;
193
- STACK_OF(GENERAL_NAME) *altname;
194
- NAME_CONSTRAINTS *nc;
195
- unsigned char sha1_hash[SHA_DIGEST_LENGTH];
196
- X509_CERT_AUX *aux;
197
- CRYPTO_BUFFER *buf;
198
- CRYPTO_MUTEX lock;
199
- } /* X509 */;
200
-
201
142
  DEFINE_STACK_OF(X509)
202
- DECLARE_ASN1_SET_OF(X509)
203
143
 
204
144
  // This is used for a table of trust checking functions
205
145
 
@@ -266,7 +206,7 @@ DEFINE_STACK_OF(X509_TRUST)
266
206
  #define XN_FLAG_SEP_MASK (0xf << 16)
267
207
 
268
208
  #define XN_FLAG_COMPAT 0 // Traditional SSLeay: use old X509_NAME_print
269
- #define XN_FLAG_SEP_COMMA_PLUS (1 << 16) // RFC2253 ,+
209
+ #define XN_FLAG_SEP_COMMA_PLUS (1 << 16) // RFC 2253 ,+
270
210
  #define XN_FLAG_SEP_CPLUS_SPC (2 << 16) // ,+ spaced: more readable
271
211
  #define XN_FLAG_SEP_SPLUS_SPC (3 << 16) // ;+ spaced
272
212
  #define XN_FLAG_SEP_MULTILINE (4 << 16) // One line per field
@@ -285,13 +225,13 @@ DEFINE_STACK_OF(X509_TRUST)
285
225
  #define XN_FLAG_SPC_EQ (1 << 23) // Put spaces round '='
286
226
 
287
227
  // This determines if we dump fields we don't recognise:
288
- // RFC2253 requires this.
228
+ // RFC 2253 requires this.
289
229
 
290
230
  #define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24)
291
231
 
292
232
  #define XN_FLAG_FN_ALIGN (1 << 25) // Align field names to 20 characters
293
233
 
294
- // Complete set of RFC2253 flags
234
+ // Complete set of RFC 2253 flags
295
235
 
296
236
  #define XN_FLAG_RFC2253 \
297
237
  (ASN1_STRFLGS_RFC2253 | XN_FLAG_SEP_COMMA_PLUS | XN_FLAG_DN_REV | \
@@ -321,45 +261,10 @@ struct x509_revoked_st {
321
261
  };
322
262
 
323
263
  DEFINE_STACK_OF(X509_REVOKED)
324
- DECLARE_ASN1_SET_OF(X509_REVOKED)
325
-
326
- struct X509_crl_info_st {
327
- ASN1_INTEGER *version;
328
- X509_ALGOR *sig_alg;
329
- X509_NAME *issuer;
330
- ASN1_TIME *lastUpdate;
331
- ASN1_TIME *nextUpdate;
332
- STACK_OF(X509_REVOKED) *revoked;
333
- STACK_OF(X509_EXTENSION) /* [0] */ *extensions;
334
- ASN1_ENCODING enc;
335
- } /* X509_CRL_INFO */;
336
264
 
337
265
  DECLARE_STACK_OF(GENERAL_NAMES)
338
266
 
339
- struct X509_crl_st {
340
- // actual signature
341
- X509_CRL_INFO *crl;
342
- X509_ALGOR *sig_alg;
343
- ASN1_BIT_STRING *signature;
344
- CRYPTO_refcount_t references;
345
- int flags;
346
- // Copies of various extensions
347
- AUTHORITY_KEYID *akid;
348
- ISSUING_DIST_POINT *idp;
349
- // Convenient breakdown of IDP
350
- int idp_flags;
351
- int idp_reasons;
352
- // CRL and base CRL numbers for delta processing
353
- ASN1_INTEGER *crl_number;
354
- ASN1_INTEGER *base_crl_number;
355
- unsigned char sha1_hash[SHA_DIGEST_LENGTH];
356
- STACK_OF(GENERAL_NAMES) *issuers;
357
- const X509_CRL_METHOD *meth;
358
- void *meth_data;
359
- } /* X509_CRL */;
360
-
361
267
  DEFINE_STACK_OF(X509_CRL)
362
- DECLARE_ASN1_SET_OF(X509_CRL)
363
268
 
364
269
  struct private_key_st {
365
270
  int version;
@@ -503,7 +408,7 @@ OPENSSL_EXPORT void X509_get0_uids(const X509 *x509,
503
408
  #define X509_extract_key(x) X509_get_pubkey(x)
504
409
 
505
410
  // X509_get_pathlen returns path length constraint from the basic constraints
506
- // extension in |x509|. (See RFC5280, section 4.2.1.9.) It returns -1 if the
411
+ // extension in |x509|. (See RFC 5280, section 4.2.1.9.) It returns -1 if the
507
412
  // constraint is not present, or if some extension in |x509| was invalid.
508
413
  //
509
414
  // Note that decoding an |X509| object will not check for invalid extensions. To
@@ -771,7 +676,6 @@ OPENSSL_EXPORT int X509_NAME_digest(const X509_NAME *name, const EVP_MD *md,
771
676
  // copying parts of it as a normal |d2i_X509| call would do.
772
677
  OPENSSL_EXPORT X509 *X509_parse_from_buffer(CRYPTO_BUFFER *buf);
773
678
 
774
- #ifndef OPENSSL_NO_FP_API
775
679
  OPENSSL_EXPORT X509 *d2i_X509_fp(FILE *fp, X509 **x509);
776
680
  OPENSSL_EXPORT int i2d_X509_fp(FILE *fp, X509 *x509);
777
681
  OPENSSL_EXPORT X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl);
@@ -805,7 +709,6 @@ OPENSSL_EXPORT int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey);
805
709
  OPENSSL_EXPORT EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a);
806
710
  OPENSSL_EXPORT int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey);
807
711
  OPENSSL_EXPORT EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a);
808
- #endif
809
712
 
810
713
  OPENSSL_EXPORT X509 *d2i_X509_bio(BIO *bp, X509 **x509);
811
714
  OPENSSL_EXPORT int i2d_X509_bio(BIO *bp, X509 *x509);
@@ -907,12 +810,30 @@ OPENSSL_EXPORT int X509_NAME_ENTRY_set(const X509_NAME_ENTRY *ne);
907
810
  OPENSSL_EXPORT int X509_NAME_get0_der(X509_NAME *nm, const unsigned char **pder,
908
811
  size_t *pderlen);
909
812
 
813
+ // X509_cmp_time compares |s| against |*t|. On success, it returns a negative
814
+ // number if |s| <= |*t| and a positive number if |s| > |*t|. On error, it
815
+ // returns zero. If |t| is NULL, it uses the current time instead of |*t|.
816
+ //
817
+ // WARNING: Unlike most comparison functions, this function returns zero on
818
+ // error, not equality.
910
819
  OPENSSL_EXPORT int X509_cmp_time(const ASN1_TIME *s, time_t *t);
820
+
821
+ // X509_cmp_current_time behaves like |X509_cmp_time| but compares |s| against
822
+ // the current time.
911
823
  OPENSSL_EXPORT int X509_cmp_current_time(const ASN1_TIME *s);
912
- OPENSSL_EXPORT ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t);
824
+
825
+ // X509_time_adj calls |X509_time_adj_ex| with |offset_day| equal to zero.
826
+ OPENSSL_EXPORT ASN1_TIME *X509_time_adj(ASN1_TIME *s, long offset_sec,
827
+ time_t *t);
828
+
829
+ // X509_time_adj_ex behaves like |ASN1_TIME_adj|, but adds an offset to |*t|. If
830
+ // |t| is NULL, it uses the current time instead of |*t|.
913
831
  OPENSSL_EXPORT ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, int offset_day,
914
832
  long offset_sec, time_t *t);
915
- OPENSSL_EXPORT ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj);
833
+
834
+ // X509_gmtime_adj behaves like |X509_time_adj_ex| but adds |offset_sec| to the
835
+ // current time.
836
+ OPENSSL_EXPORT ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long offset_sec);
916
837
 
917
838
  OPENSSL_EXPORT const char *X509_get_default_cert_area(void);
918
839
  OPENSSL_EXPORT const char *X509_get_default_cert_dir(void);
@@ -929,7 +850,15 @@ DECLARE_ASN1_FUNCTIONS(X509_VAL)
929
850
 
930
851
  DECLARE_ASN1_FUNCTIONS(X509_PUBKEY)
931
852
 
853
+ // X509_PUBKEY_set serializes |pkey| into a newly-allocated |X509_PUBKEY|
854
+ // structure. On success, it frees |*x|, sets |*x| to the new object, and
855
+ // returns one. Otherwise, it returns zero.
932
856
  OPENSSL_EXPORT int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey);
857
+
858
+ // X509_PUBKEY_get decodes the public key in |key| and returns an |EVP_PKEY| on
859
+ // success, or NULL on error. The caller must release the result with
860
+ // |EVP_PKEY_free| when done. The |EVP_PKEY| is cached in |key|, so callers must
861
+ // not mutate the result.
933
862
  OPENSSL_EXPORT EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key);
934
863
 
935
864
  DECLARE_ASN1_FUNCTIONS(X509_SIG)
@@ -951,10 +880,10 @@ DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY)
951
880
 
952
881
  DECLARE_ASN1_FUNCTIONS(X509_NAME)
953
882
 
883
+ // X509_NAME_set makes a copy of |name|. On success, it frees |*xn|, sets |*xn|
884
+ // to the copy, and returns one. Otherwise, it returns zero.
954
885
  OPENSSL_EXPORT int X509_NAME_set(X509_NAME **xn, X509_NAME *name);
955
886
 
956
- DECLARE_ASN1_FUNCTIONS(X509_CINF)
957
-
958
887
  DECLARE_ASN1_FUNCTIONS(X509)
959
888
  DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX)
960
889
 
@@ -1048,7 +977,6 @@ OPENSSL_EXPORT void X509_trust_clear(X509 *x);
1048
977
  OPENSSL_EXPORT void X509_reject_clear(X509 *x);
1049
978
 
1050
979
  DECLARE_ASN1_FUNCTIONS(X509_REVOKED)
1051
- DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO)
1052
980
  DECLARE_ASN1_FUNCTIONS(X509_CRL)
1053
981
 
1054
982
  OPENSSL_EXPORT int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev);
@@ -1074,9 +1002,10 @@ OPENSSL_EXPORT int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type,
1074
1002
  void *data, unsigned char *md,
1075
1003
  unsigned int *len);
1076
1004
 
1077
- OPENSSL_EXPORT int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *algor1,
1078
- ASN1_BIT_STRING *signature, void *data,
1079
- EVP_PKEY *pkey);
1005
+ OPENSSL_EXPORT int ASN1_item_verify(const ASN1_ITEM *it,
1006
+ const X509_ALGOR *algor1,
1007
+ const ASN1_BIT_STRING *signature,
1008
+ void *data, EVP_PKEY *pkey);
1080
1009
 
1081
1010
  OPENSSL_EXPORT int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1,
1082
1011
  X509_ALGOR *algor2,
@@ -1158,7 +1087,7 @@ OPENSSL_EXPORT void X509_REQ_get0_signature(const X509_REQ *req,
1158
1087
  // a known NID.
1159
1088
  OPENSSL_EXPORT int X509_REQ_get_signature_nid(const X509_REQ *req);
1160
1089
 
1161
- // i2d_re_X509_REQ_tbs serializes the CertificationRequestInfo (see RFC2986)
1090
+ // i2d_re_X509_REQ_tbs serializes the CertificationRequestInfo (see RFC 2986)
1162
1091
  // portion of |req|. If |outp| is NULL, nothing is written. Otherwise, if
1163
1092
  // |*outp| is not NULL, the result is written to |*outp|, which must have enough
1164
1093
  // space available, and |*outp| is advanced just past the output. If |outp| is
@@ -1185,7 +1114,7 @@ OPENSSL_EXPORT EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req);
1185
1114
 
1186
1115
  // X509_REQ_extension_nid returns one if |nid| is a supported CSR attribute type
1187
1116
  // for carrying extensions and zero otherwise. The supported types are
1188
- // |NID_ext_req| (pkcs-9-at-extensionRequest from RFC2985) and |NID_ms_ext_req|
1117
+ // |NID_ext_req| (pkcs-9-at-extensionRequest from RFC 2985) and |NID_ms_ext_req|
1189
1118
  // (a Microsoft szOID_CERT_EXTENSIONS variant).
1190
1119
  OPENSSL_EXPORT int X509_REQ_extension_nid(int nid);
1191
1120
 
@@ -1193,7 +1122,7 @@ OPENSSL_EXPORT int X509_REQ_extension_nid(int nid);
1193
1122
  // returns a newly-allocated |STACK_OF(X509_EXTENSION)| containing the result.
1194
1123
  // It returns NULL on error, or if |req| did not request extensions.
1195
1124
  //
1196
- // This function supports both pkcs-9-at-extensionRequest from RFC2985 and the
1125
+ // This function supports both pkcs-9-at-extensionRequest from RFC 2985 and the
1197
1126
  // Microsoft szOID_CERT_EXTENSIONS variant.
1198
1127
  OPENSSL_EXPORT STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req);
1199
1128
 
@@ -1413,7 +1342,6 @@ OPENSSL_EXPORT unsigned long X509_NAME_hash_old(X509_NAME *x);
1413
1342
 
1414
1343
  OPENSSL_EXPORT int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b);
1415
1344
  OPENSSL_EXPORT int X509_CRL_match(const X509_CRL *a, const X509_CRL *b);
1416
- #ifndef OPENSSL_NO_FP_API
1417
1345
  OPENSSL_EXPORT int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag,
1418
1346
  unsigned long cflag);
1419
1347
  OPENSSL_EXPORT int X509_print_fp(FILE *bp, X509 *x);
@@ -1421,7 +1349,6 @@ OPENSSL_EXPORT int X509_CRL_print_fp(FILE *bp, X509_CRL *x);
1421
1349
  OPENSSL_EXPORT int X509_REQ_print_fp(FILE *bp, X509_REQ *req);
1422
1350
  OPENSSL_EXPORT int X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm,
1423
1351
  int indent, unsigned long flags);
1424
- #endif
1425
1352
 
1426
1353
  OPENSSL_EXPORT int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase);
1427
1354
  OPENSSL_EXPORT int X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent,
@@ -1486,28 +1413,90 @@ OPENSSL_EXPORT ASN1_OBJECT *X509_NAME_ENTRY_get_object(
1486
1413
  const X509_NAME_ENTRY *ne);
1487
1414
  OPENSSL_EXPORT ASN1_STRING *X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne);
1488
1415
 
1416
+ // X509v3_get_ext_count returns the number of extensions in |x|.
1489
1417
  OPENSSL_EXPORT int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x);
1418
+
1419
+ // X509v3_get_ext_by_NID returns the index of the first extension in |x| with
1420
+ // type |nid|, or a negative number if not found. If found, callers can use
1421
+ // |X509v3_get_ext| to look up the extension by index.
1422
+ //
1423
+ // If |lastpos| is non-negative, it begins searching at |lastpos| + 1. Callers
1424
+ // can thus loop over all matching extensions by first passing -1 and then
1425
+ // passing the previously-returned value until no match is returned.
1490
1426
  OPENSSL_EXPORT int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x,
1491
1427
  int nid, int lastpos);
1428
+
1429
+ // X509v3_get_ext_by_OBJ behaves like |X509v3_get_ext_by_NID| but looks for
1430
+ // extensions matching |obj|.
1492
1431
  OPENSSL_EXPORT int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x,
1493
1432
  const ASN1_OBJECT *obj, int lastpos);
1433
+
1434
+ // X509v3_get_ext_by_critical returns the index of the first extension in |x|
1435
+ // whose critical bit matches |crit|, or a negative number if no such extension
1436
+ // was found.
1437
+ //
1438
+ // If |lastpos| is non-negative, it begins searching at |lastpos| + 1. Callers
1439
+ // can thus loop over all matching extensions by first passing -1 and then
1440
+ // passing the previously-returned value until no match is returned.
1494
1441
  OPENSSL_EXPORT int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x,
1495
1442
  int crit, int lastpos);
1443
+
1444
+ // X509v3_get_ext returns the extension in |x| at index |loc|, or NULL if |loc|
1445
+ // is out of bounds.
1496
1446
  OPENSSL_EXPORT X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x,
1497
1447
  int loc);
1448
+
1449
+ // X509v3_delete_ext removes the extension in |x| at index |loc| and returns the
1450
+ // removed extension, or NULL if |loc| was out of bounds. If an extension was
1451
+ // returned, the caller must release it with |X509_EXTENSION_free|.
1498
1452
  OPENSSL_EXPORT X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x,
1499
1453
  int loc);
1454
+
1455
+ // X509v3_add_ext adds a copy of |ex| to the extension list in |*x|. If |*x| is
1456
+ // NULL, it allocates a new |STACK_OF(X509_EXTENSION)| to hold the copy and sets
1457
+ // |*x| to the new list. It returns |*x| on success and NULL on error. The
1458
+ // caller retains ownership of |ex| and can release it independently of |*x|.
1459
+ //
1460
+ // The new extension is inserted at index |loc|, shifting extensions to the
1461
+ // right. If |loc| is -1 or out of bounds, the new extension is appended to the
1462
+ // list.
1500
1463
  OPENSSL_EXPORT STACK_OF(X509_EXTENSION) *X509v3_add_ext(
1501
1464
  STACK_OF(X509_EXTENSION) **x, X509_EXTENSION *ex, int loc);
1502
1465
 
1466
+ // X509_get_ext_count returns the number of extensions in |x|.
1503
1467
  OPENSSL_EXPORT int X509_get_ext_count(const X509 *x);
1468
+
1469
+ // X509_get_ext_by_NID behaves like |X509v3_get_ext_by_NID| but searches for
1470
+ // extensions in |x|.
1504
1471
  OPENSSL_EXPORT int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos);
1472
+
1473
+ // X509_get_ext_by_OBJ behaves like |X509v3_get_ext_by_OBJ| but searches for
1474
+ // extensions in |x|.
1505
1475
  OPENSSL_EXPORT int X509_get_ext_by_OBJ(const X509 *x, const ASN1_OBJECT *obj,
1506
1476
  int lastpos);
1477
+
1478
+ // X509_get_ext_by_critical behaves like |X509v3_get_ext_by_critical| but
1479
+ // searches for extensions in |x|.
1507
1480
  OPENSSL_EXPORT int X509_get_ext_by_critical(const X509 *x, int crit,
1508
1481
  int lastpos);
1482
+
1483
+ // X509_get_ext returns the extension in |x| at index |loc|, or NULL if |loc| is
1484
+ // out of bounds.
1509
1485
  OPENSSL_EXPORT X509_EXTENSION *X509_get_ext(const X509 *x, int loc);
1486
+
1487
+ // X509_delete_ext removes the extension in |x| at index |loc| and returns the
1488
+ // removed extension, or NULL if |loc| was out of bounds. If non-NULL, the
1489
+ // caller must release the result with |X509_EXTENSION_free|. It is also safe,
1490
+ // but not necessary, to call |X509_EXTENSION_free| if the result is NULL.
1510
1491
  OPENSSL_EXPORT X509_EXTENSION *X509_delete_ext(X509 *x, int loc);
1492
+
1493
+ // X509_add_ext adds a copy of |ex| to |x|. It returns one on success and zero
1494
+ // on failure. The caller retains ownership of |ex| and can release it
1495
+ // independently of |x|.
1496
+ //
1497
+ // The new extension is inserted at index |loc|, shifting extensions to the
1498
+ // right. If |loc| is -1 or out of bounds, the new extension is appended to the
1499
+ // list.
1511
1500
  OPENSSL_EXPORT int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc);
1512
1501
 
1513
1502
  // X509_get_ext_d2i behaves like |X509V3_get_d2i| but looks for the extension in
@@ -1527,15 +1516,41 @@ OPENSSL_EXPORT void *X509_get_ext_d2i(const X509 *x509, int nid,
1527
1516
  OPENSSL_EXPORT int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit,
1528
1517
  unsigned long flags);
1529
1518
 
1519
+ // X509_CRL_get_ext_count returns the number of extensions in |x|.
1530
1520
  OPENSSL_EXPORT int X509_CRL_get_ext_count(const X509_CRL *x);
1521
+
1522
+ // X509_CRL_get_ext_by_NID behaves like |X509v3_get_ext_by_NID| but searches for
1523
+ // extensions in |x|.
1531
1524
  OPENSSL_EXPORT int X509_CRL_get_ext_by_NID(const X509_CRL *x, int nid,
1532
1525
  int lastpos);
1526
+
1527
+ // X509_CRL_get_ext_by_OBJ behaves like |X509v3_get_ext_by_OBJ| but searches for
1528
+ // extensions in |x|.
1533
1529
  OPENSSL_EXPORT int X509_CRL_get_ext_by_OBJ(const X509_CRL *x,
1534
1530
  const ASN1_OBJECT *obj, int lastpos);
1531
+
1532
+ // X509_CRL_get_ext_by_critical behaves like |X509v3_get_ext_by_critical| but
1533
+ // searches for extensions in |x|.
1535
1534
  OPENSSL_EXPORT int X509_CRL_get_ext_by_critical(const X509_CRL *x, int crit,
1536
1535
  int lastpos);
1536
+
1537
+ // X509_CRL_get_ext returns the extension in |x| at index |loc|, or NULL if
1538
+ // |loc| is out of bounds.
1537
1539
  OPENSSL_EXPORT X509_EXTENSION *X509_CRL_get_ext(const X509_CRL *x, int loc);
1540
+
1541
+ // X509_CRL_delete_ext removes the extension in |x| at index |loc| and returns
1542
+ // the removed extension, or NULL if |loc| was out of bounds. If non-NULL, the
1543
+ // caller must release the result with |X509_EXTENSION_free|. It is also safe,
1544
+ // but not necessary, to call |X509_EXTENSION_free| if the result is NULL.
1538
1545
  OPENSSL_EXPORT X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc);
1546
+
1547
+ // X509_CRL_add_ext adds a copy of |ex| to |x|. It returns one on success and
1548
+ // zero on failure. The caller retains ownership of |ex| and can release it
1549
+ // independently of |x|.
1550
+ //
1551
+ // The new extension is inserted at index |loc|, shifting extensions to the
1552
+ // right. If |loc| is -1 or out of bounds, the new extension is appended to the
1553
+ // list.
1539
1554
  OPENSSL_EXPORT int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc);
1540
1555
 
1541
1556
  // X509_CRL_get_ext_d2i behaves like |X509V3_get_d2i| but looks for the
@@ -1555,18 +1570,45 @@ OPENSSL_EXPORT void *X509_CRL_get_ext_d2i(const X509_CRL *crl, int nid,
1555
1570
  OPENSSL_EXPORT int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value,
1556
1571
  int crit, unsigned long flags);
1557
1572
 
1573
+ // X509_REVOKED_get_ext_count returns the number of extensions in |x|.
1558
1574
  OPENSSL_EXPORT int X509_REVOKED_get_ext_count(const X509_REVOKED *x);
1575
+
1576
+ // X509_REVOKED_get_ext_by_NID behaves like |X509v3_get_ext_by_NID| but searches
1577
+ // for extensions in |x|.
1559
1578
  OPENSSL_EXPORT int X509_REVOKED_get_ext_by_NID(const X509_REVOKED *x, int nid,
1560
1579
  int lastpos);
1580
+
1581
+ // X509_REVOKED_get_ext_by_OBJ behaves like |X509v3_get_ext_by_OBJ| but searches
1582
+ // for extensions in |x|.
1561
1583
  OPENSSL_EXPORT int X509_REVOKED_get_ext_by_OBJ(const X509_REVOKED *x,
1562
1584
  const ASN1_OBJECT *obj,
1563
1585
  int lastpos);
1586
+
1587
+ // X509_REVOKED_get_ext_by_critical behaves like |X509v3_get_ext_by_critical|
1588
+ // but searches for extensions in |x|.
1564
1589
  OPENSSL_EXPORT int X509_REVOKED_get_ext_by_critical(const X509_REVOKED *x,
1565
1590
  int crit, int lastpos);
1591
+
1592
+ // X509_REVOKED_get_ext returns the extension in |x| at index |loc|, or NULL if
1593
+ // |loc| is out of bounds.
1566
1594
  OPENSSL_EXPORT X509_EXTENSION *X509_REVOKED_get_ext(const X509_REVOKED *x,
1567
1595
  int loc);
1596
+
1597
+ // X509_REVOKED_delete_ext removes the extension in |x| at index |loc| and
1598
+ // returns the removed extension, or NULL if |loc| was out of bounds. If
1599
+ // non-NULL, the caller must release the result with |X509_EXTENSION_free|. It
1600
+ // is also safe, but not necessary, to call |X509_EXTENSION_free| if the result
1601
+ // is NULL.
1568
1602
  OPENSSL_EXPORT X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x,
1569
1603
  int loc);
1604
+
1605
+ // X509_REVOKED_add_ext adds a copy of |ex| to |x|. It returns one on success
1606
+ // and zero on failure. The caller retains ownership of |ex| and can release it
1607
+ // independently of |x|.
1608
+ //
1609
+ // The new extension is inserted at index |loc|, shifting extensions to the
1610
+ // right. If |loc| is -1 or out of bounds, the new extension is appended to the
1611
+ // list.
1570
1612
  OPENSSL_EXPORT int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex,
1571
1613
  int loc);
1572
1614
 
@@ -1589,43 +1631,103 @@ OPENSSL_EXPORT int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid,
1589
1631
  void *value, int crit,
1590
1632
  unsigned long flags);
1591
1633
 
1634
+ // X509_EXTENSION_create_by_NID creates a new |X509_EXTENSION| with type |nid|,
1635
+ // value |data|, and critical bit |crit|. It returns the newly-allocated
1636
+ // |X509_EXTENSION| on success, and false on error. |nid| should be a |NID_*|
1637
+ // constant.
1638
+ //
1639
+ // If |ex| and |*ex| are both non-NULL, it modifies and returns |*ex| instead of
1640
+ // creating a new object. If |ex| is non-NULL, but |*ex| is NULL, it sets |*ex|
1641
+ // to the new |X509_EXTENSION|, in addition to returning the result.
1592
1642
  OPENSSL_EXPORT X509_EXTENSION *X509_EXTENSION_create_by_NID(
1593
1643
  X509_EXTENSION **ex, int nid, int crit, const ASN1_OCTET_STRING *data);
1644
+
1645
+ // X509_EXTENSION_create_by_OBJ behaves like |X509_EXTENSION_create_by_NID|, but
1646
+ // the extension type is determined by an |ASN1_OBJECT|.
1594
1647
  OPENSSL_EXPORT X509_EXTENSION *X509_EXTENSION_create_by_OBJ(
1595
1648
  X509_EXTENSION **ex, const ASN1_OBJECT *obj, int crit,
1596
1649
  const ASN1_OCTET_STRING *data);
1650
+
1651
+ // X509_EXTENSION_set_object sets |ex|'s extension type to |obj|. It returns one
1652
+ // on success and zero on error.
1597
1653
  OPENSSL_EXPORT int X509_EXTENSION_set_object(X509_EXTENSION *ex,
1598
1654
  const ASN1_OBJECT *obj);
1655
+
1656
+ // X509_EXTENSION_set_critical sets |ex| to critical if |crit| is non-zero and
1657
+ // to non-critical if |crit| is zero.
1599
1658
  OPENSSL_EXPORT int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit);
1659
+
1660
+ // X509_EXTENSION_set_data set's |ex|'s extension value to a copy of |data|. It
1661
+ // returns one on success and zero on error.
1600
1662
  OPENSSL_EXPORT int X509_EXTENSION_set_data(X509_EXTENSION *ex,
1601
1663
  const ASN1_OCTET_STRING *data);
1664
+
1665
+ // X509_EXTENSION_get_object returns |ex|'s extension type.
1602
1666
  OPENSSL_EXPORT ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex);
1667
+
1668
+ // X509_EXTENSION_get_data returns |ne|'s extension value.
1603
1669
  OPENSSL_EXPORT ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne);
1604
- OPENSSL_EXPORT int X509_EXTENSION_get_critical(X509_EXTENSION *ex);
1605
1670
 
1671
+ // X509_EXTENSION_get_critical returns one if |ex| is critical and zero
1672
+ // otherwise.
1673
+ OPENSSL_EXPORT int X509_EXTENSION_get_critical(const X509_EXTENSION *ex);
1674
+
1675
+ // X509at_get_attr_count returns the number of attributes in |x|.
1606
1676
  OPENSSL_EXPORT int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x);
1677
+
1678
+ // X509at_get_attr_by_NID returns the index of the attribute in |x| of type
1679
+ // |nid|, or a negative number if not found. If found, callers can use
1680
+ // |X509at_get_attr| to look up the attribute by index.
1681
+ //
1682
+ // If |lastpos| is non-negative, it begins searching at |lastpos| + 1. Callers
1683
+ // can thus loop over all matching attributes by first passing -1 and then
1684
+ // passing the previously-returned value until no match is returned.
1607
1685
  OPENSSL_EXPORT int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x,
1608
1686
  int nid, int lastpos);
1687
+
1688
+ // X509at_get_attr_by_OBJ behaves like |X509at_get_attr_by_NID| but looks for
1689
+ // attributes of type |obj|.
1609
1690
  OPENSSL_EXPORT int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk,
1610
1691
  const ASN1_OBJECT *obj, int lastpos);
1692
+
1693
+ // X509at_get_attr returns the attribute at index |loc| in |x|, or NULL if
1694
+ // out of bounds.
1611
1695
  OPENSSL_EXPORT X509_ATTRIBUTE *X509at_get_attr(
1612
1696
  const STACK_OF(X509_ATTRIBUTE) *x, int loc);
1697
+
1698
+ // X509at_delete_attr removes the attribute at index |loc| in |x|. It returns
1699
+ // the removed attribute to the caller, or NULL if |loc| was out of bounds. If
1700
+ // non-NULL, the caller must release the result with |X509_ATTRIBUTE_free| when
1701
+ // done. It is also safe, but not necessary, to call |X509_ATTRIBUTE_free| if
1702
+ // the result is NULL.
1613
1703
  OPENSSL_EXPORT X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x,
1614
1704
  int loc);
1705
+
1706
+ // X509at_add1_attr appends a copy of |attr| to the attribute list in |*x|. If
1707
+ // |*x| is NULL, it allocates a new |STACK_OF(X509_ATTRIBUTE)| to hold the copy
1708
+ // and sets |*x| to the new list. It returns |*x| on success and NULL on error.
1709
+ // The caller retains ownership of |attr| and can release it independently of
1710
+ // |*x|.
1615
1711
  OPENSSL_EXPORT STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(
1616
1712
  STACK_OF(X509_ATTRIBUTE) **x, X509_ATTRIBUTE *attr);
1713
+
1714
+ // X509at_add1_attr_by_OBJ behaves like |X509at_add1_attr|, but adds an
1715
+ // attribute created by |X509_ATTRIBUTE_create_by_OBJ|.
1617
1716
  OPENSSL_EXPORT STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(
1618
1717
  STACK_OF(X509_ATTRIBUTE) **x, const ASN1_OBJECT *obj, int type,
1619
1718
  const unsigned char *bytes, int len);
1719
+
1720
+ // X509at_add1_attr_by_NID behaves like |X509at_add1_attr|, but adds an
1721
+ // attribute created by |X509_ATTRIBUTE_create_by_NID|.
1620
1722
  OPENSSL_EXPORT STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(
1621
1723
  STACK_OF(X509_ATTRIBUTE) **x, int nid, int type, const unsigned char *bytes,
1622
1724
  int len);
1725
+
1726
+ // X509at_add1_attr_by_txt behaves like |X509at_add1_attr|, but adds an
1727
+ // attribute created by |X509_ATTRIBUTE_create_by_txt|.
1623
1728
  OPENSSL_EXPORT STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(
1624
1729
  STACK_OF(X509_ATTRIBUTE) **x, const char *attrname, int type,
1625
1730
  const unsigned char *bytes, int len);
1626
- OPENSSL_EXPORT void *X509at_get0_data_by_OBJ(STACK_OF(X509_ATTRIBUTE) *x,
1627
- ASN1_OBJECT *obj, int lastpos,
1628
- int type);
1629
1731
 
1630
1732
  // X509_ATTRIBUTE_create_by_NID returns a newly-allocated |X509_ATTRIBUTE| of
1631
1733
  // type |nid|, or NULL on error. The value is determined as in
@@ -1785,12 +1887,16 @@ OPENSSL_EXPORT char *X509_TRUST_get0_name(const X509_TRUST *xp);
1785
1887
  OPENSSL_EXPORT int X509_TRUST_get_trust(const X509_TRUST *xp);
1786
1888
 
1787
1889
 
1788
- typedef struct rsa_pss_params_st {
1890
+ struct rsa_pss_params_st {
1789
1891
  X509_ALGOR *hashAlgorithm;
1790
1892
  X509_ALGOR *maskGenAlgorithm;
1791
1893
  ASN1_INTEGER *saltLength;
1792
1894
  ASN1_INTEGER *trailerField;
1793
- } RSA_PSS_PARAMS;
1895
+ // OpenSSL caches the MGF hash on |RSA_PSS_PARAMS| in some cases. None of the
1896
+ // cases apply to BoringSSL, so this is always NULL, but Node expects the
1897
+ // field to be present.
1898
+ X509_ALGOR *maskHash;
1899
+ } /* RSA_PSS_PARAMS */;
1794
1900
 
1795
1901
  DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS)
1796
1902
 
@@ -1826,13 +1932,10 @@ BORINGSSL_MAKE_DELETER(X509_REQ, X509_REQ_free)
1826
1932
  BORINGSSL_MAKE_DELETER(X509_REVOKED, X509_REVOKED_free)
1827
1933
  BORINGSSL_MAKE_DELETER(X509_SIG, X509_SIG_free)
1828
1934
  BORINGSSL_MAKE_DELETER(X509_STORE, X509_STORE_free)
1935
+ BORINGSSL_MAKE_UP_REF(X509_STORE, X509_STORE_up_ref)
1829
1936
  BORINGSSL_MAKE_DELETER(X509_STORE_CTX, X509_STORE_CTX_free)
1830
1937
  BORINGSSL_MAKE_DELETER(X509_VERIFY_PARAM, X509_VERIFY_PARAM_free)
1831
1938
 
1832
- using ScopedX509_STORE_CTX =
1833
- internal::StackAllocated<X509_STORE_CTX, void, X509_STORE_CTX_zero,
1834
- X509_STORE_CTX_cleanup>;
1835
-
1836
1939
  BSSL_NAMESPACE_END
1837
1940
 
1838
1941
  } // extern C++