grpc 1.31.0.pre2 → 1.34.0

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 (944) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +1030 -16151
  3. data/include/grpc/grpc.h +1 -7
  4. data/include/grpc/grpc_security.h +196 -186
  5. data/include/grpc/impl/codegen/README.md +22 -0
  6. data/include/grpc/impl/codegen/grpc_types.h +9 -7
  7. data/include/grpc/impl/codegen/port_platform.h +28 -56
  8. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
  9. data/src/core/ext/filters/client_channel/client_channel.cc +243 -188
  10. data/src/core/ext/filters/client_channel/client_channel.h +1 -1
  11. data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
  12. data/src/core/ext/filters/client_channel/config_selector.cc +0 -4
  13. data/src/core/ext/filters/client_channel/config_selector.h +36 -8
  14. data/src/core/ext/filters/client_channel/health/health_check_client.cc +10 -2
  15. data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
  16. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +3 -4
  17. data/src/core/ext/filters/client_channel/lb_policy.cc +5 -1
  18. data/src/core/ext/filters/client_channel/lb_policy.h +6 -4
  19. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +48 -35
  20. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +7 -5
  21. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +10 -7
  22. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
  23. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +178 -162
  24. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -13
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +0 -3
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -37
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
  28. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -17
  29. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +79 -30
  30. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -9
  31. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +14 -34
  32. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +26 -15
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +208 -130
  34. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +299 -328
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -17
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +809 -0
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +722 -0
  38. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
  39. data/src/core/ext/filters/client_channel/resolver.cc +3 -1
  40. data/src/core/ext/filters/client_channel/resolver.h +4 -1
  41. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +2 -2
  42. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -1
  43. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +3 -3
  44. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  46. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -1
  47. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +2 -2
  48. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
  49. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +21 -1
  50. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +661 -58
  51. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
  52. data/src/core/ext/filters/client_channel/resolver_registry.cc +4 -4
  53. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +18 -61
  54. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +4 -3
  55. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +50 -48
  56. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +7 -11
  57. data/src/core/ext/filters/client_channel/retry_throttle.h +1 -1
  58. data/src/core/ext/filters/client_channel/server_address.cc +120 -7
  59. data/src/core/ext/filters/client_channel/server_address.h +44 -21
  60. data/src/core/ext/filters/client_channel/service_config.cc +18 -13
  61. data/src/core/ext/filters/client_channel/service_config.h +8 -5
  62. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
  63. data/src/core/ext/filters/client_channel/service_config_parser.cc +8 -6
  64. data/src/core/ext/filters/client_channel/service_config_parser.h +8 -5
  65. data/src/core/ext/filters/client_channel/subchannel.cc +82 -38
  66. data/src/core/ext/filters/client_channel/subchannel.h +18 -6
  67. data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
  68. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -2
  69. data/src/core/ext/filters/deadline/deadline_filter.cc +83 -77
  70. data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
  71. data/src/core/ext/filters/http/client/http_client_filter.cc +1 -1
  72. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
  73. data/src/core/ext/filters/max_age/max_age_filter.cc +3 -2
  74. data/src/core/ext/filters/message_size/message_size_filter.cc +2 -1
  75. data/src/core/ext/filters/message_size/message_size_filter.h +2 -1
  76. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +87 -31
  77. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +19 -2
  78. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +10 -35
  79. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +36 -28
  80. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -1
  81. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -2
  82. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +6 -6
  83. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -2
  84. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
  85. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +260 -311
  86. data/src/core/ext/transport/chttp2/transport/flow_control.cc +11 -3
  87. data/src/core/ext/transport/chttp2/transport/flow_control.h +12 -2
  88. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
  89. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
  90. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -8
  91. data/src/core/ext/transport/chttp2/transport/internal.h +10 -2
  92. data/src/core/ext/transport/chttp2/transport/parsing.cc +19 -31
  93. data/src/core/ext/transport/chttp2/transport/writing.cc +7 -7
  94. data/src/core/ext/transport/inproc/inproc_transport.cc +12 -12
  95. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +244 -0
  96. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +766 -0
  97. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
  98. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +226 -0
  99. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +458 -0
  100. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1635 -0
  101. data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/filter.upb.c +8 -8
  102. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +69 -0
  103. data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/outlier_detection.upb.c +8 -8
  104. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +323 -0
  105. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +124 -0
  106. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +379 -0
  107. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/backoff.upb.c +8 -8
  108. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +79 -0
  109. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +310 -0
  110. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +869 -0
  111. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +103 -0
  112. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +351 -0
  113. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
  114. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +71 -0
  115. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +53 -0
  116. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +133 -0
  117. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +241 -0
  118. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +752 -0
  119. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
  120. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +684 -0
  121. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/http_uri.upb.c +8 -8
  122. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +80 -0
  123. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +176 -0
  124. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +645 -0
  125. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +28 -0
  126. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +58 -0
  127. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/socket_option.upb.c +6 -6
  128. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +88 -0
  129. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +36 -0
  130. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +85 -0
  131. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +91 -0
  132. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +220 -0
  133. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
  134. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +273 -0
  135. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
  136. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +332 -0
  137. data/src/core/ext/upb-generated/envoy/config/listener/{v2 → v3}/api_listener.upb.c +8 -8
  138. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +65 -0
  139. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +128 -0
  140. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +467 -0
  141. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +155 -0
  142. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +539 -0
  143. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +41 -0
  144. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +94 -0
  145. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +178 -0
  146. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +616 -0
  147. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +63 -0
  148. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +204 -0
  149. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +900 -0
  150. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3290 -0
  151. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +60 -0
  152. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +139 -0
  153. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +50 -0
  154. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +108 -0
  155. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +364 -0
  156. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1336 -0
  157. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +20 -0
  158. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +34 -0
  159. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +110 -0
  160. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +387 -0
  161. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +76 -0
  162. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +214 -0
  163. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +147 -0
  164. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +570 -0
  165. data/src/core/ext/upb-generated/envoy/{api/v2 → service/cluster/v3}/cds.upb.c +5 -6
  166. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +49 -0
  167. data/src/core/ext/upb-generated/envoy/service/discovery/{v2 → v3}/ads.upb.c +5 -4
  168. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +49 -0
  169. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +139 -0
  170. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +449 -0
  171. data/src/core/ext/upb-generated/envoy/{api/v2 → service/endpoint/v3}/eds.upb.c +5 -6
  172. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +49 -0
  173. data/src/core/ext/upb-generated/envoy/{api/v2 → service/listener/v3}/lds.upb.c +5 -6
  174. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +49 -0
  175. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +55 -0
  176. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +136 -0
  177. data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/rds.upb.c +5 -6
  178. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +49 -0
  179. data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/srds.upb.c +5 -6
  180. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +49 -0
  181. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
  182. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +114 -0
  183. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
  184. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +77 -0
  185. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
  186. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +71 -0
  187. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
  188. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +145 -0
  189. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +54 -0
  190. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +133 -0
  191. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
  192. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +188 -0
  193. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
  194. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +258 -0
  195. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
  196. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +250 -0
  197. data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +2 -2
  198. data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +8 -8
  199. data/src/core/ext/upb-generated/envoy/type/{percent.upb.c → v3/percent.upb.c} +9 -8
  200. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +86 -0
  201. data/src/core/ext/upb-generated/envoy/type/{range.upb.c → v3/range.upb.c} +12 -11
  202. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +111 -0
  203. data/src/core/ext/upb-generated/envoy/type/{semantic_version.upb.c → v3/semantic_version.upb.c} +6 -5
  204. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +61 -0
  205. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +242 -0
  206. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +753 -0
  207. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +234 -0
  208. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +759 -0
  209. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +36 -36
  210. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +1 -1
  211. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -0
  212. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +57 -0
  213. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
  214. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +53 -0
  215. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +28 -0
  216. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +53 -0
  217. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +52 -0
  218. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +129 -0
  219. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +42 -0
  220. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +77 -0
  221. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +36 -0
  222. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +85 -0
  223. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +54 -0
  224. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +160 -0
  225. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +36 -0
  226. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +84 -0
  227. data/src/core/ext/upb-generated/validate/validate.upb.c +11 -11
  228. data/src/core/ext/upb-generated/validate/validate.upb.h +1 -1
  229. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +38 -0
  230. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
  231. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
  232. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
  233. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +254 -0
  234. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
  235. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
  236. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  237. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +558 -0
  238. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
  239. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
  240. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  241. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +133 -0
  242. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  243. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
  244. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
  245. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
  246. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  247. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +266 -0
  248. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +125 -0
  249. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +143 -0
  250. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
  251. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
  252. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  253. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
  254. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
  255. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
  256. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  257. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
  258. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
  259. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
  260. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  261. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +228 -0
  262. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +80 -0
  263. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +46 -0
  264. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
  265. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
  266. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
  267. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +55 -0
  268. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  269. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +110 -0
  270. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  271. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
  272. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
  273. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
  274. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  275. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
  276. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  277. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +190 -0
  278. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +55 -0
  279. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +185 -0
  280. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  281. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +62 -0
  282. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  283. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +97 -0
  284. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
  285. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +915 -0
  286. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +280 -0
  287. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
  288. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  289. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +64 -0
  290. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  291. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +511 -0
  292. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +115 -0
  293. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
  294. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  295. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +166 -0
  296. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
  297. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +105 -0
  298. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  299. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +249 -0
  300. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
  301. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
  302. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
  303. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
  304. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  305. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +152 -0
  306. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +60 -0
  307. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +83 -0
  308. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
  309. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +82 -0
  310. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
  311. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +83 -0
  312. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  313. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +86 -0
  314. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
  315. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
  316. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
  317. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
  318. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  319. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
  320. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  321. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
  322. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  323. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +73 -0
  324. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  325. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +72 -0
  326. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  327. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
  328. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  329. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
  330. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  331. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
  332. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  333. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
  334. data/src/core/ext/{upb-generated/gogoproto/gogo.upb.h → upbdefs-generated/envoy/type/v3/http.upbdefs.h} +10 -9
  335. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
  336. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
  337. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
  338. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
  339. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
  340. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  341. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
  342. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
  343. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
  344. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
  345. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +38 -0
  346. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
  347. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
  348. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
  349. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +39 -0
  350. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
  351. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
  352. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
  353. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
  354. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
  355. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +39 -0
  356. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
  357. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
  358. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
  359. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
  360. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
  361. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
  362. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
  363. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
  364. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
  365. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
  366. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
  367. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
  368. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
  369. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
  370. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
  371. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +42 -0
  372. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +35 -0
  373. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +62 -0
  374. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +40 -0
  375. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +45 -0
  376. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +40 -0
  377. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +49 -0
  378. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +35 -0
  379. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +68 -0
  380. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +40 -0
  381. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +51 -0
  382. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +35 -0
  383. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +307 -0
  384. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
  385. data/src/core/ext/xds/certificate_provider_factory.h +61 -0
  386. data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
  387. data/src/core/ext/xds/certificate_provider_registry.h +57 -0
  388. data/src/core/ext/xds/certificate_provider_store.cc +84 -0
  389. data/src/core/ext/xds/certificate_provider_store.h +107 -0
  390. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +119 -0
  391. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +72 -0
  392. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +265 -0
  393. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +104 -0
  394. data/src/core/ext/xds/xds_api.cc +2119 -0
  395. data/src/core/ext/xds/xds_api.h +438 -0
  396. data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.cc +208 -19
  397. data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.h +31 -10
  398. data/src/core/ext/xds/xds_certificate_provider.cc +240 -0
  399. data/src/core/ext/xds/xds_certificate_provider.h +74 -0
  400. data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_args.h +9 -6
  401. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +636 -847
  402. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.h +120 -98
  403. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +61 -18
  404. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +38 -10
  405. data/src/core/lib/channel/channel_args.cc +2 -1
  406. data/src/core/lib/channel/channel_args.h +0 -1
  407. data/src/core/lib/channel/channel_trace.cc +4 -2
  408. data/src/core/lib/channel/channelz.cc +24 -60
  409. data/src/core/lib/channel/channelz.h +14 -22
  410. data/src/core/lib/channel/channelz_registry.cc +15 -12
  411. data/src/core/lib/channel/channelz_registry.h +3 -0
  412. data/src/core/lib/channel/handshaker.h +2 -2
  413. data/src/core/lib/compression/compression.cc +8 -4
  414. data/src/core/lib/compression/compression_internal.cc +10 -5
  415. data/src/core/lib/compression/compression_internal.h +2 -1
  416. data/src/core/lib/compression/stream_compression_identity.cc +1 -3
  417. data/src/core/lib/debug/stats_data.cc +1 -0
  418. data/src/core/lib/gpr/cpu_iphone.cc +10 -2
  419. data/src/core/lib/gpr/log_linux.cc +17 -3
  420. data/src/core/lib/gpr/log_posix.cc +13 -1
  421. data/src/core/lib/gpr/log_windows.cc +16 -4
  422. data/src/core/lib/gpr/murmur_hash.cc +1 -1
  423. data/src/core/lib/gpr/string.cc +1 -1
  424. data/src/core/lib/gpr/sync_posix.cc +2 -8
  425. data/src/core/lib/gpr/time_precise.cc +5 -2
  426. data/src/core/lib/gpr/time_precise.h +6 -2
  427. data/src/core/lib/gpr/tls.h +4 -0
  428. data/src/core/lib/gpr/tls_msvc.h +2 -0
  429. data/src/core/lib/gpr/tls_stdcpp.h +48 -0
  430. data/src/core/lib/gpr/useful.h +5 -4
  431. data/src/core/lib/gprpp/dual_ref_counted.h +331 -0
  432. data/src/core/lib/gprpp/examine_stack.cc +43 -0
  433. data/src/core/lib/gprpp/examine_stack.h +46 -0
  434. data/src/core/lib/gprpp/fork.cc +2 -2
  435. data/src/core/lib/gprpp/manual_constructor.h +1 -1
  436. data/src/core/lib/gprpp/orphanable.h +4 -8
  437. data/src/core/lib/gprpp/ref_counted.h +91 -68
  438. data/src/core/lib/gprpp/ref_counted_ptr.h +158 -7
  439. data/src/core/lib/gprpp/stat.h +38 -0
  440. data/src/core/lib/gprpp/stat_posix.cc +49 -0
  441. data/src/core/lib/gprpp/stat_windows.cc +48 -0
  442. data/src/core/lib/gprpp/thd.h +2 -2
  443. data/src/core/lib/gprpp/thd_posix.cc +36 -36
  444. data/src/core/lib/http/parser.cc +46 -25
  445. data/src/core/lib/iomgr/endpoint.cc +5 -1
  446. data/src/core/lib/iomgr/endpoint.h +7 -3
  447. data/src/core/lib/iomgr/endpoint_cfstream.cc +36 -11
  448. data/src/core/lib/iomgr/error.cc +2 -1
  449. data/src/core/lib/iomgr/ev_epollex_linux.cc +8 -4
  450. data/src/core/lib/iomgr/ev_posix.cc +0 -2
  451. data/src/core/lib/iomgr/exec_ctx.cc +1 -1
  452. data/src/core/lib/iomgr/exec_ctx.h +10 -8
  453. data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
  454. data/src/core/lib/iomgr/executor/threadpool.h +3 -3
  455. data/src/core/lib/iomgr/iomgr.cc +0 -10
  456. data/src/core/lib/iomgr/iomgr.h +0 -10
  457. data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.cc +85 -7
  458. data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.h +23 -3
  459. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
  460. data/src/core/lib/iomgr/python_util.h +3 -3
  461. data/src/core/lib/iomgr/resolve_address_posix.cc +1 -5
  462. data/src/core/lib/iomgr/sockaddr_utils.cc +2 -1
  463. data/src/core/lib/iomgr/sockaddr_utils.h +2 -1
  464. data/src/core/lib/iomgr/tcp_custom.cc +32 -16
  465. data/src/core/lib/iomgr/tcp_posix.cc +34 -15
  466. data/src/core/lib/iomgr/tcp_windows.cc +26 -10
  467. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  468. data/src/core/lib/iomgr/unix_sockets_posix.cc +27 -15
  469. data/src/core/lib/iomgr/unix_sockets_posix.h +5 -0
  470. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +7 -0
  471. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  472. data/src/core/lib/json/json.h +2 -2
  473. data/src/core/lib/json/json_reader.cc +8 -4
  474. data/src/core/lib/json/json_util.cc +58 -0
  475. data/src/core/lib/json/json_util.h +204 -0
  476. data/src/core/lib/json/json_writer.cc +2 -1
  477. data/src/core/lib/security/authorization/authorization_engine.cc +177 -0
  478. data/src/core/lib/security/authorization/authorization_engine.h +84 -0
  479. data/src/core/lib/security/authorization/evaluate_args.cc +153 -0
  480. data/src/core/lib/security/authorization/evaluate_args.h +59 -0
  481. data/src/core/lib/security/authorization/mock_cel/activation.h +57 -0
  482. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +44 -0
  483. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +69 -0
  484. data/src/core/lib/security/authorization/mock_cel/cel_value.h +97 -0
  485. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +67 -0
  486. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +57 -0
  487. data/src/core/lib/security/context/security_context.h +3 -1
  488. data/src/core/lib/security/credentials/credentials.cc +1 -1
  489. data/src/core/lib/security/credentials/credentials.h +3 -3
  490. data/src/core/lib/security/credentials/external/aws_request_signer.cc +208 -0
  491. data/src/core/lib/security/credentials/external/aws_request_signer.h +73 -0
  492. data/src/core/lib/security/credentials/external/external_account_credentials.cc +311 -0
  493. data/src/core/lib/security/credentials/external/external_account_credentials.h +118 -0
  494. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +136 -0
  495. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
  496. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +211 -0
  497. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +59 -0
  498. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +56 -38
  499. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +51 -0
  500. data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
  501. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
  502. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -1
  503. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +2 -2
  504. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +351 -0
  505. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +218 -0
  506. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +78 -0
  507. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +74 -0
  508. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +77 -149
  509. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +58 -187
  510. data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -12
  511. data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
  512. data/src/core/lib/security/credentials/xds/xds_credentials.cc +45 -0
  513. data/src/core/lib/security/credentials/xds/xds_credentials.h +51 -0
  514. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -14
  515. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +88 -0
  516. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +70 -0
  517. data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
  518. data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
  519. data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
  520. data/src/core/lib/security/security_connector/security_connector.cc +1 -1
  521. data/src/core/lib/security/security_connector/security_connector.h +4 -2
  522. data/src/core/lib/security/security_connector/ssl_utils.h +9 -2
  523. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +293 -275
  524. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +106 -61
  525. data/src/core/lib/security/transport/secure_endpoint.cc +7 -1
  526. data/src/core/lib/security/transport/security_handshaker.cc +1 -1
  527. data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
  528. data/src/core/lib/security/util/json_util.h +1 -0
  529. data/src/core/lib/slice/slice.cc +7 -4
  530. data/src/core/lib/slice/slice_buffer.cc +2 -1
  531. data/src/core/lib/slice/slice_intern.cc +2 -2
  532. data/src/core/lib/surface/call.cc +21 -20
  533. data/src/core/lib/surface/call.h +2 -1
  534. data/src/core/lib/surface/channel.cc +37 -51
  535. data/src/core/lib/surface/channel.h +18 -3
  536. data/src/core/lib/surface/completion_queue.cc +17 -278
  537. data/src/core/lib/surface/completion_queue.h +0 -8
  538. data/src/core/lib/surface/init.cc +27 -12
  539. data/src/core/lib/surface/server.cc +1069 -1245
  540. data/src/core/lib/surface/server.h +363 -87
  541. data/src/core/lib/surface/validate_metadata.h +3 -0
  542. data/src/core/lib/surface/version.cc +2 -2
  543. data/src/core/lib/transport/authority_override.cc +38 -0
  544. data/src/core/lib/transport/authority_override.h +34 -0
  545. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  546. data/src/core/lib/transport/bdp_estimator.h +2 -1
  547. data/src/core/lib/transport/byte_stream.h +3 -3
  548. data/src/core/lib/transport/connectivity_state.cc +18 -13
  549. data/src/core/lib/transport/connectivity_state.h +22 -10
  550. data/src/core/lib/transport/error_utils.cc +13 -0
  551. data/src/core/lib/transport/error_utils.h +6 -0
  552. data/src/core/lib/transport/metadata.cc +11 -1
  553. data/src/core/lib/transport/metadata.h +2 -2
  554. data/src/core/lib/transport/static_metadata.cc +295 -276
  555. data/src/core/lib/transport/static_metadata.h +80 -73
  556. data/src/core/lib/transport/timeout_encoding.cc +4 -4
  557. data/src/core/lib/transport/transport.cc +5 -3
  558. data/src/core/lib/transport/transport.h +8 -1
  559. data/src/core/lib/uri/uri_parser.cc +23 -21
  560. data/src/core/lib/uri/uri_parser.h +3 -1
  561. data/src/core/plugin_registry/grpc_plugin_registry.cc +35 -20
  562. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +26 -3
  563. data/src/core/tsi/fake_transport_security.cc +1 -0
  564. data/src/core/tsi/local_transport_security.cc +5 -1
  565. data/src/core/tsi/local_transport_security.h +6 -7
  566. data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -0
  567. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -1
  568. data/src/core/tsi/ssl_transport_security.cc +16 -9
  569. data/src/core/tsi/ssl_transport_security.h +3 -0
  570. data/src/core/tsi/transport_security.cc +4 -2
  571. data/src/ruby/bin/math_services_pb.rb +4 -4
  572. data/src/ruby/ext/grpc/extconf.rb +1 -1
  573. data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
  574. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +26 -18
  575. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +43 -31
  576. data/src/ruby/lib/grpc/generic/client_stub.rb +1 -1
  577. data/src/ruby/lib/grpc/version.rb +1 -1
  578. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
  579. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +5 -0
  580. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +28 -12
  581. data/src/ruby/spec/channel_credentials_spec.rb +10 -0
  582. data/src/ruby/spec/generic/active_call_spec.rb +19 -8
  583. data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
  584. data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
  585. data/src/ruby/spec/pb/codegen/package_option_spec.rb +20 -0
  586. data/src/ruby/spec/user_agent_spec.rb +74 -0
  587. data/third_party/abseil-cpp/absl/algorithm/container.h +1764 -0
  588. data/third_party/abseil-cpp/absl/base/attributes.h +99 -38
  589. data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
  590. data/third_party/abseil-cpp/absl/base/casts.h +9 -6
  591. data/third_party/abseil-cpp/absl/base/config.h +60 -17
  592. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
  593. data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
  594. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +166 -0
  595. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  596. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
  597. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
  598. data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
  599. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
  600. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
  601. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +29 -1
  602. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
  603. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
  604. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
  605. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
  606. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
  607. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
  608. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
  609. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
  610. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
  611. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
  612. data/third_party/abseil-cpp/absl/base/macros.h +36 -109
  613. data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
  614. data/third_party/abseil-cpp/absl/base/options.h +31 -4
  615. data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
  616. data/third_party/abseil-cpp/absl/base/thread_annotations.h +94 -39
  617. data/third_party/abseil-cpp/absl/container/fixed_array.h +532 -0
  618. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +504 -0
  619. data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
  620. data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
  621. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
  622. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +460 -0
  623. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +161 -0
  624. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +208 -0
  625. data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
  626. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +270 -0
  627. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +321 -0
  628. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
  629. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +50 -0
  630. data/third_party/abseil-cpp/absl/container/internal/layout.h +743 -0
  631. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
  632. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1903 -0
  633. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +139 -0
  634. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
  635. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1945 -0
  636. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
  637. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
  638. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
  639. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +196 -0
  640. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +134 -0
  641. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +89 -0
  642. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -0
  643. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
  644. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
  645. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +93 -0
  646. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
  647. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +149 -0
  648. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +173 -0
  649. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
  650. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
  651. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
  652. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +36 -0
  653. data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
  654. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
  655. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1560 -0
  656. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
  657. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
  658. data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
  659. data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
  660. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  661. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
  662. data/third_party/abseil-cpp/absl/hash/hash.h +325 -0
  663. data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
  664. data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
  665. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
  666. data/third_party/abseil-cpp/absl/hash/internal/hash.h +996 -0
  667. data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
  668. data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
  669. data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
  670. data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
  671. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +51 -0
  672. data/third_party/abseil-cpp/absl/status/status.cc +445 -0
  673. data/third_party/abseil-cpp/absl/status/status.h +817 -0
  674. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
  675. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
  676. data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
  677. data/third_party/abseil-cpp/absl/strings/cord.cc +1998 -0
  678. data/third_party/abseil-cpp/absl/strings/cord.h +1276 -0
  679. data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
  680. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
  681. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  682. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
  683. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
  684. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +173 -0
  685. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
  686. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
  687. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
  688. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
  689. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -14
  690. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
  691. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
  692. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +999 -87
  693. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -3
  694. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
  695. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +8 -6
  696. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
  697. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
  698. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  699. data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
  700. data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
  701. data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
  702. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
  703. data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
  704. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
  705. data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
  706. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
  707. data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
  708. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
  709. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
  710. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
  711. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
  712. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +697 -0
  713. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
  714. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
  715. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +249 -0
  716. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
  717. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
  718. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +492 -0
  719. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
  720. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2739 -0
  721. data/third_party/abseil-cpp/absl/synchronization/mutex.h +1065 -0
  722. data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
  723. data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
  724. data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -9
  725. data/third_party/abseil-cpp/absl/time/clock.cc +3 -3
  726. data/third_party/abseil-cpp/absl/time/duration.cc +90 -59
  727. data/third_party/abseil-cpp/absl/time/format.cc +43 -36
  728. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +26 -16
  729. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +4 -2
  730. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
  731. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
  732. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
  733. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
  734. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +136 -129
  735. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
  736. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +8 -7
  737. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -6
  738. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
  739. data/third_party/abseil-cpp/absl/time/time.h +15 -16
  740. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
  741. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
  742. data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
  743. data/third_party/abseil-cpp/absl/types/optional.h +9 -9
  744. data/third_party/abseil-cpp/absl/types/span.h +49 -36
  745. data/third_party/abseil-cpp/absl/types/variant.h +861 -0
  746. data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
  747. data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
  748. data/third_party/boringssl-with-bazel/err_data.c +479 -467
  749. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +0 -6
  750. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
  751. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +9 -43
  752. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
  753. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
  754. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +4 -0
  755. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +16 -0
  756. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
  757. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
  758. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
  759. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +4 -0
  760. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +30 -10
  761. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +56 -22
  762. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +8 -2
  763. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +543 -0
  764. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +237 -0
  765. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +118 -49
  766. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +267 -95
  767. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +210 -34
  768. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
  769. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +3 -3
  770. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +6 -4
  771. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +3 -3
  772. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -1
  773. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +7 -2
  774. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +21 -18
  775. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -1
  776. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +24 -3
  777. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +3 -3
  778. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
  779. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +3 -3
  780. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +29 -35
  781. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +13 -2
  782. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +9 -8
  783. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +10 -10
  784. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +2 -2
  785. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +28 -40
  786. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
  787. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +3 -1
  788. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
  789. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
  790. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +14 -14
  791. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +7 -3
  792. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +2 -2
  793. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
  794. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
  795. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +55 -8
  796. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -1
  797. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +24 -0
  798. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +54 -0
  799. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +0 -1
  800. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +6 -3
  801. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
  802. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +6 -0
  803. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +1 -1
  804. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
  805. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +12 -0
  806. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +9 -0
  807. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +4 -1
  808. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
  809. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
  810. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +103 -10
  811. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +5 -2
  812. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +42 -14
  813. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +199 -78
  814. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +482 -432
  815. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
  816. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +35 -0
  817. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +18 -18
  818. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -3
  819. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
  820. data/third_party/boringssl-with-bazel/src/ssl/internal.h +49 -10
  821. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +42 -1
  822. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +3 -6
  823. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +8 -9
  824. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +77 -0
  825. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +11 -14
  826. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +250 -20
  827. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -2
  828. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +57 -19
  829. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +140 -41
  830. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
  831. data/third_party/upb/upb/decode.c +64 -15
  832. data/third_party/upb/upb/def.c +2169 -0
  833. data/third_party/upb/upb/def.h +330 -0
  834. data/third_party/upb/upb/def.hpp +525 -0
  835. data/third_party/upb/upb/encode.c +2 -2
  836. data/third_party/upb/upb/msg.h +2 -2
  837. data/third_party/upb/upb/port_def.inc +1 -1
  838. data/third_party/upb/upb/reflection.c +391 -0
  839. data/third_party/upb/upb/reflection.h +168 -0
  840. data/third_party/upb/upb/table.c +0 -11
  841. data/third_party/upb/upb/table.int.h +0 -9
  842. data/third_party/upb/upb/text_encode.c +398 -0
  843. data/third_party/upb/upb/text_encode.h +35 -0
  844. data/third_party/upb/upb/upb.c +16 -14
  845. data/third_party/upb/upb/upb.h +26 -0
  846. data/third_party/upb/upb/upb.hpp +2 -0
  847. metadata +489 -161
  848. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +0 -528
  849. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +0 -1143
  850. data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -2110
  851. data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -345
  852. data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
  853. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -106
  854. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
  855. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -34
  856. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
  857. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -429
  858. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
  859. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -198
  860. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
  861. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -388
  862. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -52
  863. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
  864. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1453
  865. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
  866. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -226
  867. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
  868. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -323
  869. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
  870. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -334
  871. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -79
  872. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
  873. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -891
  874. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
  875. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -328
  876. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
  877. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -71
  878. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
  879. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -649
  880. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
  881. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -693
  882. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
  883. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
  884. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -536
  885. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -88
  886. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
  887. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -386
  888. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -52
  889. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
  890. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -224
  891. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
  892. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -32
  893. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
  894. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -273
  895. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
  896. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -332
  897. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -52
  898. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
  899. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -415
  900. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
  901. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -32
  902. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
  903. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -538
  904. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
  905. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -111
  906. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -52
  907. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
  908. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -204
  909. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
  910. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -32
  911. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
  912. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -2984
  913. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
  914. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -135
  915. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -52
  916. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
  917. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -732
  918. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
  919. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1167
  920. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
  921. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
  922. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
  923. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -49
  924. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
  925. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -136
  926. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
  927. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -145
  928. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
  929. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
  930. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
  931. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
  932. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -86
  933. data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -111
  934. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -61
  935. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
  936. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -250
  937. data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
  938. data/src/core/lib/security/transport/target_authority_table.cc +0 -75
  939. data/src/core/lib/security/transport/target_authority_table.h +0 -40
  940. data/src/core/lib/slice/slice_hash_table.h +0 -199
  941. data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
  942. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
  943. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
  944. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
@@ -29,8 +29,8 @@
29
29
  #include <grpc/support/string_util.h>
30
30
 
31
31
  #include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
32
- #include "src/core/ext/filters/client_channel/xds/xds_channel_args.h"
33
32
  #include "src/core/ext/transport/chttp2/alpn/alpn.h"
33
+ #include "src/core/ext/xds/xds_channel_args.h"
34
34
  #include "src/core/lib/channel/channel_args.h"
35
35
  #include "src/core/lib/channel/handshaker.h"
36
36
  #include "src/core/lib/gpr/string.h"
@@ -40,7 +40,6 @@
40
40
  #include "src/core/lib/security/credentials/credentials.h"
41
41
  #include "src/core/lib/security/credentials/fake/fake_credentials.h"
42
42
  #include "src/core/lib/security/transport/security_handshaker.h"
43
- #include "src/core/lib/security/transport/target_authority_table.h"
44
43
  #include "src/core/tsi/fake_transport_security.h"
45
44
 
46
45
  namespace {
@@ -57,11 +56,9 @@ class grpc_fake_channel_security_connector final
57
56
  target_(gpr_strdup(target)),
58
57
  expected_targets_(
59
58
  gpr_strdup(grpc_fake_transport_get_expected_targets(args))),
60
- is_lb_channel_(
61
- grpc_channel_args_find(args, GRPC_ARG_ADDRESS_IS_XDS_SERVER) !=
62
- nullptr ||
63
- grpc_channel_args_find(
64
- args, GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER) != nullptr) {
59
+ is_lb_channel_(grpc_channel_args_find(
60
+ args, GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER) !=
61
+ nullptr) {
65
62
  const grpc_arg* target_name_override_arg =
66
63
  grpc_channel_args_find(args, GRPC_SSL_TARGET_NAME_OVERRIDE_ARG);
67
64
  if (target_name_override_arg != nullptr) {
@@ -148,9 +145,7 @@ class grpc_fake_channel_security_connector final
148
145
  char* target_name_override() const { return target_name_override_; }
149
146
 
150
147
  private:
151
- bool fake_check_target(const char* target_type, const char* target,
152
- const char* set_str) const {
153
- GPR_ASSERT(target_type != nullptr);
148
+ bool fake_check_target(const char* target, const char* set_str) const {
154
149
  GPR_ASSERT(target != nullptr);
155
150
  char** set = nullptr;
156
151
  size_t set_size = 0;
@@ -186,14 +181,14 @@ class grpc_fake_channel_security_connector final
186
181
  expected_targets_);
187
182
  goto done;
188
183
  }
189
- if (!fake_check_target("LB", target_, lbs_and_backends[1])) {
184
+ if (!fake_check_target(target_, lbs_and_backends[1])) {
190
185
  gpr_log(GPR_ERROR, "LB target '%s' not found in expected set '%s'",
191
186
  target_, lbs_and_backends[1]);
192
187
  goto done;
193
188
  }
194
189
  success = true;
195
190
  } else {
196
- if (!fake_check_target("Backend", target_, lbs_and_backends[0])) {
191
+ if (!fake_check_target(target_, lbs_and_backends[0])) {
197
192
  gpr_log(GPR_ERROR, "Backend target '%s' not found in expected set '%s'",
198
193
  target_, lbs_and_backends[0]);
199
194
  goto done;
@@ -228,7 +223,7 @@ static void fake_check_peer(
228
223
  }
229
224
  prop_name = peer.properties[0].name;
230
225
  if (prop_name == nullptr ||
231
- strcmp(prop_name, TSI_CERTIFICATE_TYPE_PEER_PROPERTY)) {
226
+ strcmp(prop_name, TSI_CERTIFICATE_TYPE_PEER_PROPERTY) != 0) {
232
227
  error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
233
228
  absl::StrCat("Unexpected property in fake peer: ",
234
229
  prop_name == nullptr ? "<EMPTY>" : prop_name)
@@ -236,7 +231,7 @@ static void fake_check_peer(
236
231
  goto end;
237
232
  }
238
233
  if (strncmp(peer.properties[0].value.data, TSI_FAKE_CERTIFICATE_TYPE,
239
- peer.properties[0].value.length)) {
234
+ peer.properties[0].value.length) != 0) {
240
235
  error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
241
236
  "Invalid value for cert type property.");
242
237
  goto end;
@@ -0,0 +1,88 @@
1
+ //
2
+ //
3
+ // Copyright 2020 gRPC authors.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+ //
17
+ //
18
+
19
+ #include <grpc/support/port_platform.h>
20
+
21
+ #include "src/core/lib/security/security_connector/insecure/insecure_security_connector.h"
22
+
23
+ #include "src/core/lib/gprpp/ref_counted_ptr.h"
24
+ #include "src/core/lib/security/transport/security_handshaker.h"
25
+ #include "src/core/tsi/local_transport_security.h"
26
+
27
+ namespace grpc_core {
28
+
29
+ const char kInsecureTransportSecurityType[] = "insecure";
30
+
31
+ // check_call_host and cancel_check_call_host are no-ops since we want to
32
+ // provide an insecure channel.
33
+ bool InsecureChannelSecurityConnector::check_call_host(
34
+ absl::string_view host, grpc_auth_context* auth_context,
35
+ grpc_closure* on_call_host_checked, grpc_error** error) {
36
+ *error = GRPC_ERROR_NONE;
37
+ return true;
38
+ }
39
+
40
+ void InsecureChannelSecurityConnector::cancel_check_call_host(
41
+ grpc_closure* on_call_host_checked, grpc_error* error) {
42
+ GRPC_ERROR_UNREF(error);
43
+ }
44
+
45
+ // add_handshakers should have been a no-op but we need to add a minimalist
46
+ // security handshaker so that check_peer is invoked and an auth_context is
47
+ // created with the security level of TSI_SECURITY_NONE.
48
+ void InsecureChannelSecurityConnector::add_handshakers(
49
+ const grpc_channel_args* args, grpc_pollset_set* /* interested_parties */,
50
+ HandshakeManager* handshake_manager) {
51
+ tsi_handshaker* handshaker = nullptr;
52
+ // Re-use local_tsi_handshaker_create as a minimalist handshaker.
53
+ GPR_ASSERT(tsi_local_handshaker_create(true /* is_client */, &handshaker) ==
54
+ TSI_OK);
55
+ handshake_manager->Add(SecurityHandshakerCreate(handshaker, this, args));
56
+ }
57
+
58
+ void InsecureChannelSecurityConnector::check_peer(
59
+ tsi_peer peer, grpc_endpoint* ep,
60
+ RefCountedPtr<grpc_auth_context>* auth_context,
61
+ grpc_closure* on_peer_checked) {
62
+ *auth_context = MakeAuthContext();
63
+ tsi_peer_destruct(&peer);
64
+ ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, GRPC_ERROR_NONE);
65
+ }
66
+
67
+ int InsecureChannelSecurityConnector::cmp(
68
+ const grpc_security_connector* other_sc) const {
69
+ return channel_security_connector_cmp(
70
+ static_cast<const grpc_channel_security_connector*>(other_sc));
71
+ }
72
+
73
+ RefCountedPtr<grpc_auth_context>
74
+ InsecureChannelSecurityConnector::MakeAuthContext() {
75
+ auto ctx = MakeRefCounted<grpc_auth_context>(nullptr);
76
+ grpc_auth_context_add_cstring_property(
77
+ ctx.get(), GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME,
78
+ kInsecureTransportSecurityType);
79
+ GPR_ASSERT(grpc_auth_context_set_peer_identity_property_name(
80
+ ctx.get(), GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME) == 1);
81
+ const char* security_level = tsi_security_level_to_string(TSI_SECURITY_NONE);
82
+ grpc_auth_context_add_property(ctx.get(),
83
+ GRPC_TRANSPORT_SECURITY_LEVEL_PROPERTY_NAME,
84
+ security_level, strlen(security_level));
85
+ return ctx;
86
+ }
87
+
88
+ } // namespace grpc_core
@@ -0,0 +1,70 @@
1
+ //
2
+ //
3
+ // Copyright 2020 gRPC authors.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+ //
17
+ //
18
+
19
+ #ifndef GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_INSECURE_INSECURE_SECURITY_CONNECTOR_H
20
+ #define GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_INSECURE_INSECURE_SECURITY_CONNECTOR_H
21
+
22
+ #include <grpc/support/port_platform.h>
23
+
24
+ #include "src/core/lib/security/context/security_context.h"
25
+ #include "src/core/lib/security/credentials/credentials.h"
26
+ #include "src/core/lib/security/security_connector/security_connector.h"
27
+
28
+ namespace grpc_core {
29
+
30
+ extern const char kInsecureTransportSecurityType[];
31
+
32
+ class InsecureChannelSecurityConnector
33
+ : public grpc_channel_security_connector {
34
+ public:
35
+ InsecureChannelSecurityConnector(
36
+ grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
37
+ grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds)
38
+ : grpc_channel_security_connector(/* url_scheme */ nullptr,
39
+ std::move(channel_creds),
40
+ std::move(request_metadata_creds)) {}
41
+
42
+ bool check_call_host(absl::string_view host, grpc_auth_context* auth_context,
43
+ grpc_closure* on_call_host_checked,
44
+ grpc_error** error) override;
45
+
46
+ void cancel_check_call_host(grpc_closure* on_call_host_checked,
47
+ grpc_error* error) override;
48
+
49
+ void add_handshakers(const grpc_channel_args* args,
50
+ grpc_pollset_set* /* interested_parties */,
51
+ grpc_core::HandshakeManager* handshake_manager) override;
52
+
53
+ void check_peer(tsi_peer peer, grpc_endpoint* ep,
54
+ grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
55
+ grpc_closure* on_peer_checked) override;
56
+
57
+ int cmp(const grpc_security_connector* other_sc) const override;
58
+
59
+ // Exposed for testing purposes only.
60
+ // Create an auth context which is necessary to pass the santiy check in
61
+ // client_auth_filter that verifies if the peer's auth context is obtained
62
+ // during handshakes. The auth context is only checked for its existence and
63
+ // not actually used.
64
+ static RefCountedPtr<grpc_auth_context> MakeAuthContext();
65
+ };
66
+
67
+ } // namespace grpc_core
68
+
69
+ #endif /* GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_INSECURE_INSECURE_SECURITY_CONNECTOR_H \
70
+ */
@@ -19,6 +19,10 @@
19
19
  #ifndef GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_LOAD_SYSTEM_ROOTS_H
20
20
  #define GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_LOAD_SYSTEM_ROOTS_H
21
21
 
22
+ #include <grpc/support/port_platform.h>
23
+
24
+ #include <grpc/slice.h>
25
+
22
26
  namespace grpc_core {
23
27
 
24
28
  // Returns a slice containing roots from the OS trust store
@@ -21,6 +21,8 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include <grpc/slice.h>
25
+
24
26
  #ifdef GPR_LINUX
25
27
 
26
28
  namespace grpc_core {
@@ -157,7 +157,7 @@ class grpc_local_channel_security_connector final
157
157
  const grpc_channel_args* args, grpc_pollset_set* /*interested_parties*/,
158
158
  grpc_core::HandshakeManager* handshake_manager) override {
159
159
  tsi_handshaker* handshaker = nullptr;
160
- GPR_ASSERT(local_tsi_handshaker_create(true /* is_client */, &handshaker) ==
160
+ GPR_ASSERT(tsi_local_handshaker_create(true /* is_client */, &handshaker) ==
161
161
  TSI_OK);
162
162
  handshake_manager->Add(
163
163
  grpc_core::SecurityHandshakerCreate(handshaker, this, args));
@@ -215,7 +215,7 @@ class grpc_local_server_security_connector final
215
215
  const grpc_channel_args* args, grpc_pollset_set* /*interested_parties*/,
216
216
  grpc_core::HandshakeManager* handshake_manager) override {
217
217
  tsi_handshaker* handshaker = nullptr;
218
- GPR_ASSERT(local_tsi_handshaker_create(false /* is_client */,
218
+ GPR_ASSERT(tsi_local_handshaker_create(false /* is_client */,
219
219
  &handshaker) == TSI_OK);
220
220
  handshake_manager->Add(
221
221
  grpc_core::SecurityHandshakerCreate(handshaker, this, args));
@@ -109,7 +109,7 @@ grpc_arg grpc_security_connector_to_arg(grpc_security_connector* sc) {
109
109
  }
110
110
 
111
111
  grpc_security_connector* grpc_security_connector_from_arg(const grpc_arg* arg) {
112
- if (strcmp(arg->key, GRPC_ARG_SECURITY_CONNECTOR)) return nullptr;
112
+ if (strcmp(arg->key, GRPC_ARG_SECURITY_CONNECTOR) != 0) return nullptr;
113
113
  if (arg->type != GRPC_ARG_POINTER) {
114
114
  gpr_log(GPR_ERROR, "Invalid type %d for arg %s", arg->type,
115
115
  GRPC_ARG_SECURITY_CONNECTOR);
@@ -49,9 +49,11 @@ class grpc_security_connector
49
49
  public:
50
50
  explicit grpc_security_connector(const char* url_scheme)
51
51
  : grpc_core::RefCounted<grpc_security_connector>(
52
- &grpc_trace_security_connector_refcount),
52
+ GRPC_TRACE_FLAG_ENABLED(grpc_trace_security_connector_refcount)
53
+ ? "security_connector_refcount"
54
+ : nullptr),
53
55
  url_scheme_(url_scheme) {}
54
- virtual ~grpc_security_connector() = default;
56
+ ~grpc_security_connector() override = default;
55
57
 
56
58
  /* Check the peer. Callee takes ownership of the peer object.
57
59
  When done, sets *auth_context and invokes on_peer_checked. */
@@ -154,11 +154,11 @@ class PemKeyCertPair {
154
154
  }
155
155
 
156
156
  // Movable.
157
- PemKeyCertPair(PemKeyCertPair&& other) {
157
+ PemKeyCertPair(PemKeyCertPair&& other) noexcept {
158
158
  private_key_ = std::move(other.private_key_);
159
159
  cert_chain_ = std::move(other.cert_chain_);
160
160
  }
161
- PemKeyCertPair& operator=(PemKeyCertPair&& other) {
161
+ PemKeyCertPair& operator=(PemKeyCertPair&& other) noexcept {
162
162
  private_key_ = std::move(other.private_key_);
163
163
  cert_chain_ = std::move(other.cert_chain_);
164
164
  return *this;
@@ -174,6 +174,11 @@ class PemKeyCertPair {
174
174
  return *this;
175
175
  }
176
176
 
177
+ bool operator==(const PemKeyCertPair& other) const {
178
+ return std::strcmp(this->private_key(), other.private_key()) == 0 &&
179
+ std::strcmp(this->cert_chain(), other.cert_chain()) == 0;
180
+ }
181
+
177
182
  char* private_key() const { return private_key_.get(); }
178
183
  char* cert_chain() const { return cert_chain_.get(); }
179
184
 
@@ -182,6 +187,8 @@ class PemKeyCertPair {
182
187
  grpc_core::UniquePtr<char> cert_chain_;
183
188
  };
184
189
 
190
+ typedef absl::InlinedVector<grpc_core::PemKeyCertPair, 1> PemKeyCertPairList;
191
+
185
192
  } // namespace grpc_core
186
193
 
187
194
  #endif /* GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_SSL_UTILS_H \
@@ -46,7 +46,7 @@ namespace grpc_core {
46
46
  namespace {
47
47
 
48
48
  tsi_ssl_pem_key_cert_pair* ConvertToTsiPemKeyCertPair(
49
- const grpc_tls_key_materials_config::PemKeyCertPairList& cert_pair_list) {
49
+ const grpc_core::PemKeyCertPairList& cert_pair_list) {
50
50
  tsi_ssl_pem_key_cert_pair* tsi_pairs = nullptr;
51
51
  size_t num_key_cert_pairs = cert_pair_list.size();
52
52
  if (num_key_cert_pairs > 0) {
@@ -65,127 +65,120 @@ tsi_ssl_pem_key_cert_pair* ConvertToTsiPemKeyCertPair(
65
65
 
66
66
  } // namespace
67
67
 
68
- grpc_status_code TlsFetchKeyMaterials(
69
- const grpc_core::RefCountedPtr<grpc_tls_key_materials_config>&
70
- key_materials_config,
71
- const grpc_tls_credentials_options& options, bool is_server,
72
- grpc_ssl_certificate_config_reload_status* status) {
73
- GPR_ASSERT(key_materials_config != nullptr);
74
- GPR_ASSERT(status != nullptr);
75
- bool is_key_materials_empty =
76
- key_materials_config->pem_key_cert_pair_list().empty();
77
- grpc_tls_credential_reload_config* credential_reload_config =
78
- options.credential_reload_config();
79
- /** If there are no key materials and no credential reload config and the
80
- * caller is a server, then return an error. We do not require that a client
81
- * always provision certificates. **/
82
- if (credential_reload_config == nullptr && is_key_materials_empty &&
83
- is_server) {
68
+ // -------------------channel security connector-------------------
69
+ grpc_core::RefCountedPtr<grpc_channel_security_connector>
70
+ TlsChannelSecurityConnector::CreateTlsChannelSecurityConnector(
71
+ grpc_core::RefCountedPtr<grpc_channel_credentials> ch_creds,
72
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options,
73
+ grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
74
+ const char* target_name, const char* overridden_target_name,
75
+ tsi_ssl_session_cache* ssl_session_cache) {
76
+ if (ch_creds == nullptr) {
84
77
  gpr_log(GPR_ERROR,
85
- "Either credential reload config or key materials should be "
86
- "provisioned.");
87
- return GRPC_STATUS_FAILED_PRECONDITION;
88
- }
89
- grpc_status_code reload_status = GRPC_STATUS_OK;
90
- /** Use |credential_reload_config| to update |key_materials_config|. **/
91
- if (credential_reload_config != nullptr) {
92
- grpc_tls_credential_reload_arg* arg = new grpc_tls_credential_reload_arg();
93
- arg->key_materials_config = key_materials_config.get();
94
- arg->error_details = new grpc_tls_error_details();
95
- int result = credential_reload_config->Schedule(arg);
96
- if (result) {
97
- /** Credential reloading is performed async. This is not yet supported.
98
- * **/
99
- gpr_log(GPR_ERROR, "Async credential reload is unsupported now.");
100
- *status = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
101
- reload_status =
102
- is_key_materials_empty ? GRPC_STATUS_UNIMPLEMENTED : GRPC_STATUS_OK;
103
- } else {
104
- /** Credential reloading is performed sync. **/
105
- *status = arg->status;
106
- if (arg->status == GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED) {
107
- /* Key materials is not empty. */
108
- gpr_log(GPR_DEBUG, "Credential does not change after reload.");
109
- } else if (arg->status == GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL) {
110
- gpr_log(GPR_ERROR, "Credential reload failed with an error:");
111
- if (arg->error_details != nullptr) {
112
- gpr_log(GPR_ERROR, "%s", arg->error_details->error_details().c_str());
113
- }
114
- reload_status =
115
- is_key_materials_empty ? GRPC_STATUS_INTERNAL : GRPC_STATUS_OK;
116
- }
117
- }
118
- delete arg->error_details;
119
- /** If the credential reload config was constructed via a wrapped language,
120
- * then |arg->context| and |arg->destroy_context| will not be nullptr. In
121
- * this case, we must destroy |arg->context|, which stores the wrapped
122
- * language-version of the credential reload arg. **/
123
- if (arg->destroy_context != nullptr) {
124
- arg->destroy_context(arg->context);
125
- }
126
- delete arg;
78
+ "channel_creds is nullptr in "
79
+ "TlsChannelSecurityConnectorCreate()");
80
+ return nullptr;
127
81
  }
128
- return reload_status;
129
- }
130
-
131
- grpc_error* TlsCheckHostName(const char* peer_name, const tsi_peer* peer) {
132
- /* Check the peer name if specified. */
133
- if (peer_name != nullptr && !grpc_ssl_host_matches_name(peer, peer_name)) {
134
- return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
135
- absl::StrCat("Peer name ", peer_name, " is not in peer certificate")
136
- .c_str());
82
+ if (options == nullptr) {
83
+ gpr_log(GPR_ERROR,
84
+ "options is nullptr in "
85
+ "TlsChannelSecurityConnectorCreate()");
86
+ return nullptr;
137
87
  }
138
- return GRPC_ERROR_NONE;
88
+ if (target_name == nullptr) {
89
+ gpr_log(GPR_ERROR,
90
+ "target_name is nullptr in "
91
+ "TlsChannelSecurityConnectorCreate()");
92
+ return nullptr;
93
+ }
94
+ grpc_core::RefCountedPtr<TlsChannelSecurityConnector> c =
95
+ grpc_core::MakeRefCounted<TlsChannelSecurityConnector>(
96
+ std::move(ch_creds), std::move(options),
97
+ std::move(request_metadata_creds), target_name,
98
+ overridden_target_name, ssl_session_cache);
99
+ return c;
139
100
  }
140
101
 
141
102
  TlsChannelSecurityConnector::TlsChannelSecurityConnector(
142
- grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
103
+ grpc_core::RefCountedPtr<grpc_channel_credentials> ch_creds,
104
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options,
143
105
  grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
144
- const char* target_name, const char* overridden_target_name)
145
- : grpc_channel_security_connector(GRPC_SSL_URL_SCHEME,
146
- std::move(channel_creds),
106
+ const char* target_name, const char* overridden_target_name,
107
+ tsi_ssl_session_cache* ssl_session_cache)
108
+ : grpc_channel_security_connector(GRPC_SSL_URL_SCHEME, std::move(ch_creds),
147
109
  std::move(request_metadata_creds)),
110
+ options_(std::move(options)),
148
111
  overridden_target_name_(
149
- overridden_target_name == nullptr ? "" : overridden_target_name) {
150
- key_materials_config_ = grpc_tls_key_materials_config_create()->Ref();
112
+ overridden_target_name == nullptr ? "" : overridden_target_name),
113
+ ssl_session_cache_(ssl_session_cache) {
114
+ if (ssl_session_cache_ != nullptr) {
115
+ tsi_ssl_session_cache_ref(ssl_session_cache_);
116
+ }
151
117
  check_arg_ = ServerAuthorizationCheckArgCreate(this);
152
118
  absl::string_view host;
153
119
  absl::string_view port;
154
120
  grpc_core::SplitHostPort(target_name, &host, &port);
155
121
  target_name_ = std::string(host);
122
+ // Create a watcher.
123
+ auto watcher_ptr = absl::make_unique<TlsChannelCertificateWatcher>(this);
124
+ certificate_watcher_ = watcher_ptr.get();
125
+ // Register the watcher with the distributor.
126
+ grpc_tls_certificate_distributor* distributor =
127
+ options_->certificate_distributor();
128
+ absl::optional<std::string> watched_root_cert_name;
129
+ if (options_->watch_root_cert()) {
130
+ watched_root_cert_name = options_->root_cert_name();
131
+ }
132
+ absl::optional<std::string> watched_identity_cert_name;
133
+ if (options_->watch_identity_pair()) {
134
+ watched_identity_cert_name = options_->identity_cert_name();
135
+ }
136
+ distributor->WatchTlsCertificates(std::move(watcher_ptr),
137
+ watched_root_cert_name,
138
+ watched_identity_cert_name);
156
139
  }
157
140
 
158
141
  TlsChannelSecurityConnector::~TlsChannelSecurityConnector() {
142
+ if (ssl_session_cache_ != nullptr) {
143
+ tsi_ssl_session_cache_unref(ssl_session_cache_);
144
+ }
145
+ // Cancel all the watchers.
146
+ grpc_tls_certificate_distributor* distributor =
147
+ options_->certificate_distributor();
148
+ distributor->CancelTlsCertificatesWatch(certificate_watcher_);
159
149
  if (client_handshaker_factory_ != nullptr) {
160
150
  tsi_ssl_client_handshaker_factory_unref(client_handshaker_factory_);
161
151
  }
162
- if (key_materials_config_.get() != nullptr) {
163
- key_materials_config_.get()->Unref();
152
+ if (check_arg_ != nullptr) {
153
+ ServerAuthorizationCheckArgDestroy(check_arg_);
164
154
  }
165
- ServerAuthorizationCheckArgDestroy(check_arg_);
166
155
  }
167
156
 
168
157
  void TlsChannelSecurityConnector::add_handshakers(
169
158
  const grpc_channel_args* args, grpc_pollset_set* /*interested_parties*/,
170
159
  grpc_core::HandshakeManager* handshake_mgr) {
171
- if (RefreshHandshakerFactory() != GRPC_SECURITY_OK) {
172
- gpr_log(GPR_ERROR, "Handshaker factory refresh failed.");
173
- return;
174
- }
175
- // Instantiate TSI handshaker.
176
- tsi_handshaker* tsi_hs = nullptr;
177
- tsi_result result = tsi_ssl_client_handshaker_factory_create_handshaker(
178
- client_handshaker_factory_,
179
- overridden_target_name_.empty() ? target_name_.c_str()
180
- : overridden_target_name_.c_str(),
181
- &tsi_hs);
182
- if (result != TSI_OK) {
183
- gpr_log(GPR_ERROR, "Handshaker creation failed with error %s.",
184
- tsi_result_to_string(result));
160
+ grpc_core::MutexLock lock(&mu_);
161
+ if (client_handshaker_factory_ != nullptr) {
162
+ // Instantiate TSI handshaker.
163
+ tsi_handshaker* tsi_hs = nullptr;
164
+ tsi_result result = tsi_ssl_client_handshaker_factory_create_handshaker(
165
+ client_handshaker_factory_,
166
+ overridden_target_name_.empty() ? target_name_.c_str()
167
+ : overridden_target_name_.c_str(),
168
+ &tsi_hs);
169
+ if (result != TSI_OK) {
170
+ gpr_log(GPR_ERROR, "Handshaker creation failed with error %s.",
171
+ tsi_result_to_string(result));
172
+ return;
173
+ }
174
+ // Create handshakers.
175
+ handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(tsi_hs, this, args));
185
176
  return;
186
177
  }
187
- // Create handshakers.
188
- handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(tsi_hs, this, args));
178
+ // TODO(ZhenLian): Implement the logic(delegation to
179
+ // BlockOnInitialCredentialHandshaker) when certificates are not ready.
180
+ gpr_log(GPR_ERROR, "%s not supported yet.",
181
+ "Client BlockOnInitialCredentialHandshaker");
189
182
  }
190
183
 
191
184
  void TlsChannelSecurityConnector::check_peer(
@@ -203,12 +196,9 @@ void TlsChannelSecurityConnector::check_peer(
203
196
  }
204
197
  *auth_context =
205
198
  grpc_ssl_peer_to_auth_context(&peer, GRPC_TLS_TRANSPORT_SECURITY_TYPE);
206
- const TlsCredentials* creds =
207
- static_cast<const TlsCredentials*>(channel_creds());
208
- if (creds->options().server_verification_option() ==
209
- GRPC_TLS_SERVER_VERIFICATION) {
199
+ if (options_->server_verification_option() == GRPC_TLS_SERVER_VERIFICATION) {
210
200
  /* Do the default host name check if specifying the target name. */
211
- error = TlsCheckHostName(target_name, &peer);
201
+ error = internal::TlsCheckHostName(target_name, &peer);
212
202
  if (error != GRPC_ERROR_NONE) {
213
203
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
214
204
  tsi_peer_destruct(&peer);
@@ -217,7 +207,7 @@ void TlsChannelSecurityConnector::check_peer(
217
207
  }
218
208
  /* Do the custom server authorization check, if specified by the user. */
219
209
  const grpc_tls_server_authorization_check_config* config =
220
- creds->options().server_authorization_check_config();
210
+ options_->server_authorization_check_config();
221
211
  /* If server authorization config is not null, use it to perform
222
212
  * server authorization check. */
223
213
  if (config != nullptr) {
@@ -289,105 +279,86 @@ void TlsChannelSecurityConnector::cancel_check_call_host(
289
279
  GRPC_ERROR_UNREF(error);
290
280
  }
291
281
 
292
- grpc_core::RefCountedPtr<grpc_channel_security_connector>
293
- TlsChannelSecurityConnector::CreateTlsChannelSecurityConnector(
294
- grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
295
- grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
296
- const char* target_name, const char* overridden_target_name,
297
- tsi_ssl_session_cache* ssl_session_cache) {
298
- if (channel_creds == nullptr) {
299
- gpr_log(GPR_ERROR,
300
- "channel_creds is nullptr in "
301
- "TlsChannelSecurityConnectorCreate()");
302
- return nullptr;
282
+ void TlsChannelSecurityConnector::TlsChannelCertificateWatcher::
283
+ OnCertificatesChanged(
284
+ absl::optional<absl::string_view> root_certs,
285
+ absl::optional<grpc_core::PemKeyCertPairList> key_cert_pairs) {
286
+ GPR_ASSERT(security_connector_ != nullptr);
287
+ grpc_core::MutexLock lock(&security_connector_->mu_);
288
+ if (root_certs.has_value()) {
289
+ security_connector_->pem_root_certs_ = root_certs;
290
+ }
291
+ if (key_cert_pairs.has_value()) {
292
+ security_connector_->pem_key_cert_pair_list_ = std::move(key_cert_pairs);
293
+ }
294
+ bool root_being_watched = security_connector_->options_->watch_root_cert();
295
+ bool root_has_value = security_connector_->pem_root_certs_.has_value();
296
+ bool identity_being_watched =
297
+ security_connector_->options_->watch_identity_pair();
298
+ bool identity_has_value =
299
+ security_connector_->pem_key_cert_pair_list_.has_value();
300
+ if ((root_being_watched && root_has_value && identity_being_watched &&
301
+ identity_has_value) ||
302
+ (root_being_watched && root_has_value && !identity_being_watched) ||
303
+ (!root_being_watched && identity_being_watched && identity_has_value)) {
304
+ if (security_connector_->UpdateHandshakerFactoryLocked() !=
305
+ GRPC_SECURITY_OK) {
306
+ gpr_log(GPR_ERROR, "Update handshaker factory failed.");
307
+ }
303
308
  }
304
- if (target_name == nullptr) {
309
+ }
310
+
311
+ // TODO(ZhenLian): implement the logic to signal waiting handshakers once
312
+ // BlockOnInitialCredentialHandshaker is implemented.
313
+ void TlsChannelSecurityConnector::TlsChannelCertificateWatcher::OnError(
314
+ grpc_error* root_cert_error, grpc_error* identity_cert_error) {
315
+ if (root_cert_error != GRPC_ERROR_NONE) {
305
316
  gpr_log(GPR_ERROR,
306
- "target_name is nullptr in "
307
- "TlsChannelSecurityConnectorCreate()");
308
- return nullptr;
317
+ "TlsChannelCertificateWatcher getting root_cert_error: %s",
318
+ grpc_error_string(root_cert_error));
309
319
  }
310
- grpc_core::RefCountedPtr<TlsChannelSecurityConnector> c =
311
- grpc_core::MakeRefCounted<TlsChannelSecurityConnector>(
312
- std::move(channel_creds), std::move(request_metadata_creds),
313
- target_name, overridden_target_name);
314
- if (c->InitializeHandshakerFactory(ssl_session_cache) != GRPC_SECURITY_OK) {
315
- gpr_log(GPR_ERROR, "Could not initialize client handshaker factory.");
316
- return nullptr;
320
+ if (identity_cert_error != GRPC_ERROR_NONE) {
321
+ gpr_log(GPR_ERROR,
322
+ "TlsChannelCertificateWatcher getting identity_cert_error: %s",
323
+ grpc_error_string(identity_cert_error));
317
324
  }
318
- return c;
325
+ GRPC_ERROR_UNREF(root_cert_error);
326
+ GRPC_ERROR_UNREF(identity_cert_error);
319
327
  }
320
328
 
321
- grpc_security_status TlsChannelSecurityConnector::ReplaceHandshakerFactory(
322
- tsi_ssl_session_cache* ssl_session_cache) {
323
- const TlsCredentials* creds =
324
- static_cast<const TlsCredentials*>(channel_creds());
329
+ // TODO(ZhenLian): implement the logic to signal waiting handshakers once
330
+ // BlockOnInitialCredentialHandshaker is implemented.
331
+ grpc_security_status
332
+ TlsChannelSecurityConnector::UpdateHandshakerFactoryLocked() {
325
333
  bool skip_server_certificate_verification =
326
- creds->options().server_verification_option() ==
334
+ options_->server_verification_option() ==
327
335
  GRPC_TLS_SKIP_ALL_SERVER_VERIFICATION;
328
336
  /* Free the client handshaker factory if exists. */
329
- if (client_handshaker_factory_) {
337
+ if (client_handshaker_factory_ != nullptr) {
330
338
  tsi_ssl_client_handshaker_factory_unref(client_handshaker_factory_);
331
339
  }
332
- tsi_ssl_pem_key_cert_pair* pem_key_cert_pair = ConvertToTsiPemKeyCertPair(
333
- key_materials_config_->pem_key_cert_pair_list());
340
+ std::string pem_root_certs;
341
+ if (pem_root_certs_.has_value()) {
342
+ // TODO(ZhenLian): update the underlying TSI layer to use C++ types like
343
+ // std::string and absl::string_view to avoid making another copy here.
344
+ pem_root_certs = std::string(*pem_root_certs_);
345
+ }
346
+ tsi_ssl_pem_key_cert_pair* pem_key_cert_pair = nullptr;
347
+ if (pem_key_cert_pair_list_.has_value()) {
348
+ pem_key_cert_pair = ConvertToTsiPemKeyCertPair(*pem_key_cert_pair_list_);
349
+ }
334
350
  grpc_security_status status = grpc_ssl_tsi_client_handshaker_factory_init(
335
- pem_key_cert_pair, key_materials_config_->pem_root_certs(),
351
+ pem_key_cert_pair,
352
+ pem_root_certs.empty() ? nullptr : pem_root_certs.c_str(),
336
353
  skip_server_certificate_verification,
337
- grpc_get_tsi_tls_version(creds->options().min_tls_version()),
338
- grpc_get_tsi_tls_version(creds->options().max_tls_version()),
339
- ssl_session_cache, &client_handshaker_factory_);
354
+ grpc_get_tsi_tls_version(options_->min_tls_version()),
355
+ grpc_get_tsi_tls_version(options_->max_tls_version()), ssl_session_cache_,
356
+ &client_handshaker_factory_);
340
357
  /* Free memory. */
341
- grpc_tsi_ssl_pem_key_cert_pairs_destroy(pem_key_cert_pair, 1);
342
- return status;
343
- }
344
-
345
- grpc_security_status TlsChannelSecurityConnector::InitializeHandshakerFactory(
346
- tsi_ssl_session_cache* ssl_session_cache) {
347
- grpc_core::MutexLock lock(&mu_);
348
- const TlsCredentials* creds =
349
- static_cast<const TlsCredentials*>(channel_creds());
350
- grpc_tls_key_materials_config* key_materials_config =
351
- creds->options().key_materials_config();
352
- // key_materials_config_->set_key_materials will handle the copying of the key
353
- // materials users provided
354
- if (key_materials_config != nullptr) {
355
- key_materials_config_->set_key_materials(
356
- key_materials_config->pem_root_certs(),
357
- key_materials_config->pem_key_cert_pair_list());
358
- }
359
- grpc_ssl_certificate_config_reload_status reload_status =
360
- GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
361
- /** If |creds->options()| has a credential reload config, then the call to
362
- * |TlsFetchKeyMaterials| will use it to update the root cert and
363
- * pem-key-cert-pair list stored in |key_materials_config_|. **/
364
- if (TlsFetchKeyMaterials(key_materials_config_, creds->options(), false,
365
- &reload_status) != GRPC_STATUS_OK) {
366
- /* Raise an error if key materials are not populated. */
367
- return GRPC_SECURITY_ERROR;
368
- }
369
- return ReplaceHandshakerFactory(ssl_session_cache);
370
- }
371
-
372
- grpc_security_status TlsChannelSecurityConnector::RefreshHandshakerFactory() {
373
- grpc_core::MutexLock lock(&mu_);
374
- const TlsCredentials* creds =
375
- static_cast<const TlsCredentials*>(channel_creds());
376
- grpc_ssl_certificate_config_reload_status reload_status =
377
- GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
378
- /** If |creds->options()| has a credential reload config, then the call to
379
- * |TlsFetchKeyMaterials| will use it to update the root cert and
380
- * pem-key-cert-pair list stored in |key_materials_config_|. **/
381
- if (TlsFetchKeyMaterials(key_materials_config_, creds->options(), false,
382
- &reload_status) != GRPC_STATUS_OK) {
383
- return GRPC_SECURITY_ERROR;
384
- }
385
- if (reload_status != GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW) {
386
- // Re-use existing handshaker factory.
387
- return GRPC_SECURITY_OK;
388
- } else {
389
- return ReplaceHandshakerFactory(nullptr);
358
+ if (pem_key_cert_pair != nullptr) {
359
+ grpc_tsi_ssl_pem_key_cert_pairs_destroy(pem_key_cert_pair, 1);
390
360
  }
361
+ return status;
391
362
  }
392
363
 
393
364
  void TlsChannelSecurityConnector::ServerAuthorizationCheckDone(
@@ -457,40 +428,86 @@ void TlsChannelSecurityConnector::ServerAuthorizationCheckArgDestroy(
457
428
  delete arg;
458
429
  }
459
430
 
431
+ // -------------------server security connector-------------------
432
+ grpc_core::RefCountedPtr<grpc_server_security_connector>
433
+ TlsServerSecurityConnector::CreateTlsServerSecurityConnector(
434
+ grpc_core::RefCountedPtr<grpc_server_credentials> server_creds,
435
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options) {
436
+ if (server_creds == nullptr) {
437
+ gpr_log(GPR_ERROR,
438
+ "server_creds is nullptr in "
439
+ "TlsServerSecurityConnectorCreate()");
440
+ return nullptr;
441
+ }
442
+ if (options == nullptr) {
443
+ gpr_log(GPR_ERROR,
444
+ "options is nullptr in "
445
+ "TlsServerSecurityConnectorCreate()");
446
+ return nullptr;
447
+ }
448
+ grpc_core::RefCountedPtr<TlsServerSecurityConnector> c =
449
+ grpc_core::MakeRefCounted<TlsServerSecurityConnector>(
450
+ std::move(server_creds), std::move(options));
451
+ return c;
452
+ }
453
+
460
454
  TlsServerSecurityConnector::TlsServerSecurityConnector(
461
- grpc_core::RefCountedPtr<grpc_server_credentials> server_creds)
455
+ grpc_core::RefCountedPtr<grpc_server_credentials> server_creds,
456
+ grpc_core::RefCountedPtr<grpc_tls_credentials_options> options)
462
457
  : grpc_server_security_connector(GRPC_SSL_URL_SCHEME,
463
- std::move(server_creds)) {
464
- key_materials_config_ = grpc_tls_key_materials_config_create()->Ref();
458
+ std::move(server_creds)),
459
+ options_(std::move(options)) {
460
+ // Create a watcher.
461
+ auto watcher_ptr = absl::make_unique<TlsServerCertificateWatcher>(this);
462
+ certificate_watcher_ = watcher_ptr.get();
463
+ // Register the watcher with the distributor.
464
+ grpc_tls_certificate_distributor* distributor =
465
+ options_->certificate_distributor();
466
+ absl::optional<std::string> watched_root_cert_name;
467
+ if (options_->watch_root_cert()) {
468
+ watched_root_cert_name = options_->root_cert_name();
469
+ }
470
+ absl::optional<std::string> watched_identity_cert_name;
471
+ if (options_->watch_identity_pair()) {
472
+ watched_identity_cert_name = options_->identity_cert_name();
473
+ }
474
+ distributor->WatchTlsCertificates(std::move(watcher_ptr),
475
+ watched_root_cert_name,
476
+ watched_identity_cert_name);
465
477
  }
466
478
 
467
479
  TlsServerSecurityConnector::~TlsServerSecurityConnector() {
480
+ // Cancel all the watchers.
481
+ grpc_tls_certificate_distributor* distributor =
482
+ options_->certificate_distributor();
483
+ distributor->CancelTlsCertificatesWatch(certificate_watcher_);
468
484
  if (server_handshaker_factory_ != nullptr) {
469
485
  tsi_ssl_server_handshaker_factory_unref(server_handshaker_factory_);
470
486
  }
471
- if (key_materials_config_.get() != nullptr) {
472
- key_materials_config_.get()->Unref();
473
- }
474
487
  }
475
488
 
476
489
  void TlsServerSecurityConnector::add_handshakers(
477
490
  const grpc_channel_args* args, grpc_pollset_set* /*interested_parties*/,
478
491
  grpc_core::HandshakeManager* handshake_mgr) {
479
- /* Refresh handshaker factory if needed. */
480
- if (RefreshHandshakerFactory() != GRPC_SECURITY_OK) {
481
- gpr_log(GPR_ERROR, "Handshaker factory refresh failed.");
482
- return;
483
- }
484
- /* Create a TLS TSI handshaker for server. */
485
- tsi_handshaker* tsi_hs = nullptr;
486
- tsi_result result = tsi_ssl_server_handshaker_factory_create_handshaker(
487
- server_handshaker_factory_, &tsi_hs);
488
- if (result != TSI_OK) {
489
- gpr_log(GPR_ERROR, "Handshaker creation failed with error %s.",
490
- tsi_result_to_string(result));
492
+ grpc_core::MutexLock lock(&mu_);
493
+ if (server_handshaker_factory_ != nullptr) {
494
+ // Instantiate TSI handshaker.
495
+ tsi_handshaker* tsi_hs = nullptr;
496
+ tsi_result result = tsi_ssl_server_handshaker_factory_create_handshaker(
497
+ server_handshaker_factory_, &tsi_hs);
498
+ if (result != TSI_OK) {
499
+ gpr_log(GPR_ERROR, "Handshaker creation failed with error %s.",
500
+ tsi_result_to_string(result));
501
+ return;
502
+ }
503
+ // Create handshakers.
504
+ handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(tsi_hs, this, args));
491
505
  return;
492
506
  }
493
- handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(tsi_hs, this, args));
507
+ // TODO(ZhenLian): Implement the logic(delegation to
508
+ // BlockOnInitialCredentialHandshaker) when certificates are not ready.
509
+ gpr_log(GPR_ERROR, "%s not supported yet.",
510
+ "Server BlockOnInitialCredentialHandshaker");
494
511
  }
495
512
 
496
513
  void TlsServerSecurityConnector::check_peer(
@@ -510,43 +527,79 @@ int TlsServerSecurityConnector::cmp(
510
527
  static_cast<const grpc_server_security_connector*>(other));
511
528
  }
512
529
 
513
- grpc_core::RefCountedPtr<grpc_server_security_connector>
514
- TlsServerSecurityConnector::CreateTlsServerSecurityConnector(
515
- grpc_core::RefCountedPtr<grpc_server_credentials> server_creds) {
516
- if (server_creds == nullptr) {
530
+ void TlsServerSecurityConnector::TlsServerCertificateWatcher::
531
+ OnCertificatesChanged(
532
+ absl::optional<absl::string_view> root_certs,
533
+ absl::optional<grpc_core::PemKeyCertPairList> key_cert_pairs) {
534
+ GPR_ASSERT(security_connector_ != nullptr);
535
+ grpc_core::MutexLock lock(&security_connector_->mu_);
536
+ if (root_certs.has_value()) {
537
+ security_connector_->pem_root_certs_ = root_certs;
538
+ }
539
+ if (key_cert_pairs.has_value()) {
540
+ security_connector_->pem_key_cert_pair_list_ = std::move(key_cert_pairs);
541
+ }
542
+ bool root_being_watched = security_connector_->options_->watch_root_cert();
543
+ bool root_has_value = security_connector_->pem_root_certs_.has_value();
544
+ bool identity_being_watched =
545
+ security_connector_->options_->watch_identity_pair();
546
+ bool identity_has_value =
547
+ security_connector_->pem_key_cert_pair_list_.has_value();
548
+ if ((root_being_watched && root_has_value && identity_being_watched &&
549
+ identity_has_value) ||
550
+ (root_being_watched && root_has_value && !identity_being_watched) ||
551
+ (!root_being_watched && identity_being_watched && identity_has_value)) {
552
+ if (security_connector_->UpdateHandshakerFactoryLocked() !=
553
+ GRPC_SECURITY_OK) {
554
+ gpr_log(GPR_ERROR, "Update handshaker factory failed.");
555
+ }
556
+ }
557
+ }
558
+
559
+ // TODO(ZhenLian): implement the logic to signal waiting handshakers once
560
+ // BlockOnInitialCredentialHandshaker is implemented.
561
+ void TlsServerSecurityConnector::TlsServerCertificateWatcher::OnError(
562
+ grpc_error* root_cert_error, grpc_error* identity_cert_error) {
563
+ if (root_cert_error != GRPC_ERROR_NONE) {
517
564
  gpr_log(GPR_ERROR,
518
- "server_creds is nullptr in "
519
- "TlsServerSecurityConnectorCreate()");
520
- return nullptr;
565
+ "TlsServerCertificateWatcher getting root_cert_error: %s",
566
+ grpc_error_string(root_cert_error));
521
567
  }
522
- grpc_core::RefCountedPtr<TlsServerSecurityConnector> c =
523
- grpc_core::MakeRefCounted<TlsServerSecurityConnector>(
524
- std::move(server_creds));
525
- if (c->InitializeHandshakerFactory() != GRPC_SECURITY_OK) {
526
- gpr_log(GPR_ERROR, "Could not initialize server handshaker factory.");
527
- return nullptr;
568
+ if (identity_cert_error != GRPC_ERROR_NONE) {
569
+ gpr_log(GPR_ERROR,
570
+ "TlsServerCertificateWatcher getting identity_cert_error: %s",
571
+ grpc_error_string(identity_cert_error));
528
572
  }
529
- return c;
573
+ GRPC_ERROR_UNREF(root_cert_error);
574
+ GRPC_ERROR_UNREF(identity_cert_error);
530
575
  }
531
576
 
532
- grpc_security_status TlsServerSecurityConnector::ReplaceHandshakerFactory() {
533
- const TlsServerCredentials* creds =
534
- static_cast<const TlsServerCredentials*>(server_creds());
577
+ // TODO(ZhenLian): implement the logic to signal waiting handshakers once
578
+ // BlockOnInitialCredentialHandshaker is implemented.
579
+ grpc_security_status
580
+ TlsServerSecurityConnector::UpdateHandshakerFactoryLocked() {
535
581
  /* Free the server handshaker factory if exists. */
536
- if (server_handshaker_factory_) {
582
+ if (server_handshaker_factory_ != nullptr) {
537
583
  tsi_ssl_server_handshaker_factory_unref(server_handshaker_factory_);
538
584
  }
539
- GPR_ASSERT(!key_materials_config_->pem_key_cert_pair_list().empty());
540
- tsi_ssl_pem_key_cert_pair* pem_key_cert_pairs = ConvertToTsiPemKeyCertPair(
541
- key_materials_config_->pem_key_cert_pair_list());
542
- size_t num_key_cert_pairs =
543
- key_materials_config_->pem_key_cert_pair_list().size();
585
+ // The identity certs on the server side shouldn't be empty.
586
+ GPR_ASSERT(pem_key_cert_pair_list_.has_value());
587
+ GPR_ASSERT(!(*pem_key_cert_pair_list_).empty());
588
+ std::string pem_root_certs;
589
+ if (pem_root_certs_.has_value()) {
590
+ // TODO(ZhenLian): update the underlying TSI layer to use C++ types like
591
+ // std::string and absl::string_view to avoid making another copy here.
592
+ pem_root_certs = std::string(*pem_root_certs_);
593
+ }
594
+ tsi_ssl_pem_key_cert_pair* pem_key_cert_pairs = nullptr;
595
+ pem_key_cert_pairs = ConvertToTsiPemKeyCertPair(*pem_key_cert_pair_list_);
596
+ size_t num_key_cert_pairs = (*pem_key_cert_pair_list_).size();
544
597
  grpc_security_status status = grpc_ssl_tsi_server_handshaker_factory_init(
545
598
  pem_key_cert_pairs, num_key_cert_pairs,
546
- key_materials_config_->pem_root_certs(),
547
- creds->options().cert_request_type(),
548
- grpc_get_tsi_tls_version(creds->options().min_tls_version()),
549
- grpc_get_tsi_tls_version(creds->options().max_tls_version()),
599
+ pem_root_certs.empty() ? nullptr : pem_root_certs.c_str(),
600
+ options_->cert_request_type(),
601
+ grpc_get_tsi_tls_version(options_->min_tls_version()),
602
+ grpc_get_tsi_tls_version(options_->max_tls_version()),
550
603
  &server_handshaker_factory_);
551
604
  /* Free memory. */
552
605
  grpc_tsi_ssl_pem_key_cert_pairs_destroy(pem_key_cert_pairs,
@@ -554,53 +607,18 @@ grpc_security_status TlsServerSecurityConnector::ReplaceHandshakerFactory() {
554
607
  return status;
555
608
  }
556
609
 
557
- grpc_security_status TlsServerSecurityConnector::InitializeHandshakerFactory() {
558
- grpc_core::MutexLock lock(&mu_);
559
- const TlsServerCredentials* creds =
560
- static_cast<const TlsServerCredentials*>(server_creds());
561
- grpc_tls_key_materials_config* key_materials_config =
562
- creds->options().key_materials_config();
563
- if (key_materials_config != nullptr) {
564
- key_materials_config_->set_key_materials(
565
- key_materials_config->pem_root_certs(),
566
- key_materials_config->pem_key_cert_pair_list());
567
- }
568
- grpc_ssl_certificate_config_reload_status reload_status =
569
- GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
570
- /** If |creds->options()| has a credential reload config, then the call to
571
- * |TlsFetchKeyMaterials| will use it to update the root cert and
572
- * pem-key-cert-pair list stored in |key_materials_config_|. Otherwise, it
573
- * will return |GRPC_STATUS_OK| if |key_materials_config_| already has
574
- * credentials, and an error code if not. **/
575
- if (TlsFetchKeyMaterials(key_materials_config_, creds->options(), true,
576
- &reload_status) != GRPC_STATUS_OK) {
577
- /* Raise an error if key materials are not populated. */
578
- return GRPC_SECURITY_ERROR;
579
- }
580
- return ReplaceHandshakerFactory();
581
- }
610
+ namespace internal {
582
611
 
583
- grpc_security_status TlsServerSecurityConnector::RefreshHandshakerFactory() {
584
- grpc_core::MutexLock lock(&mu_);
585
- const TlsServerCredentials* creds =
586
- static_cast<const TlsServerCredentials*>(server_creds());
587
- grpc_ssl_certificate_config_reload_status reload_status =
588
- GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED;
589
- /** If |creds->options()| has a credential reload config, then the call to
590
- * |TlsFetchKeyMaterials| will use it to update the root cert and
591
- * pem-key-cert-pair list stored in |key_materials_config_|. Otherwise, it
592
- * will return |GRPC_STATUS_OK| if |key_materials_config_| already has
593
- * credentials, and an error code if not. **/
594
- if (TlsFetchKeyMaterials(key_materials_config_, creds->options(), true,
595
- &reload_status) != GRPC_STATUS_OK) {
596
- return GRPC_SECURITY_ERROR;
597
- }
598
- if (reload_status != GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW) {
599
- /* At this point, we should have key materials populated. */
600
- return GRPC_SECURITY_OK;
601
- } else {
602
- return ReplaceHandshakerFactory();
612
+ grpc_error* TlsCheckHostName(const char* peer_name, const tsi_peer* peer) {
613
+ /* Check the peer name if specified. */
614
+ if (peer_name != nullptr && !grpc_ssl_host_matches_name(peer, peer_name)) {
615
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
616
+ absl::StrCat("Peer name ", peer_name, " is not in peer certificate")
617
+ .c_str());
603
618
  }
619
+ return GRPC_ERROR_NONE;
604
620
  }
605
621
 
622
+ } // namespace internal
623
+
606
624
  } // namespace grpc_core