grpc 1.33.0.pre1 → 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 (533) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +342 -134
  3. data/include/grpc/grpc.h +1 -2
  4. data/include/grpc/grpc_security.h +149 -172
  5. data/include/grpc/impl/codegen/grpc_types.h +9 -2
  6. data/include/grpc/impl/codegen/port_platform.h +22 -55
  7. data/src/core/ext/filters/client_channel/client_channel.cc +11 -34
  8. data/src/core/ext/filters/client_channel/config_selector.h +2 -3
  9. data/src/core/ext/filters/client_channel/health/health_check_client.cc +4 -1
  10. data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
  11. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  12. data/src/core/ext/filters/client_channel/lb_policy.cc +5 -1
  13. data/src/core/ext/filters/client_channel/lb_policy.h +3 -3
  14. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +1 -1
  15. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +80 -71
  17. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
  18. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +2 -2
  19. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +47 -17
  20. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +2 -2
  21. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +8 -5
  22. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -3
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +1 -1
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +16 -243
  25. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -17
  26. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +809 -0
  27. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +20 -25
  28. data/src/core/ext/filters/client_channel/resolver.cc +3 -1
  29. data/src/core/ext/filters/client_channel/resolver.h +4 -1
  30. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +1 -1
  31. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -1
  32. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -1
  33. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
  34. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
  35. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +20 -0
  36. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +66 -7
  37. data/src/core/ext/filters/client_channel/resolver_registry.cc +4 -4
  38. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +13 -25
  39. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +1 -1
  40. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +2 -2
  41. data/src/core/ext/filters/client_channel/retry_throttle.h +1 -1
  42. data/src/core/ext/filters/client_channel/server_address.h +0 -4
  43. data/src/core/ext/filters/client_channel/service_config.cc +3 -1
  44. data/src/core/ext/filters/client_channel/service_config.h +1 -1
  45. data/src/core/ext/filters/client_channel/subchannel.cc +18 -15
  46. data/src/core/ext/filters/client_channel/subchannel.h +2 -2
  47. data/src/core/ext/filters/client_channel/subchannel_interface.h +7 -15
  48. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -2
  49. data/src/core/ext/filters/deadline/deadline_filter.cc +83 -77
  50. data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
  51. data/src/core/ext/filters/http/client/http_client_filter.cc +1 -1
  52. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
  53. data/src/core/ext/filters/max_age/max_age_filter.cc +1 -1
  54. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +1 -1
  55. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +17 -3
  56. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
  57. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +4 -24
  58. data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -2
  59. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
  60. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -8
  61. data/src/core/ext/transport/chttp2/transport/internal.h +0 -1
  62. data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -1
  63. data/src/core/ext/transport/chttp2/transport/writing.cc +1 -2
  64. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +38 -0
  65. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
  66. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
  67. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
  68. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +254 -0
  69. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
  70. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
  71. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  72. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +558 -0
  73. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
  74. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
  75. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  76. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +133 -0
  77. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  78. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
  79. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
  80. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
  81. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  82. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +266 -0
  83. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +125 -0
  84. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +143 -0
  85. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
  86. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
  87. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  88. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
  89. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
  90. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
  91. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  92. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
  93. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
  94. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
  95. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  96. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +228 -0
  97. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +80 -0
  98. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +46 -0
  99. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
  100. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
  101. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
  102. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +55 -0
  103. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  104. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +110 -0
  105. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  106. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
  107. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
  108. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
  109. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  110. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
  111. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  112. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +190 -0
  113. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +55 -0
  114. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +185 -0
  115. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  116. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +62 -0
  117. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  118. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +97 -0
  119. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
  120. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +915 -0
  121. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +280 -0
  122. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
  123. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  124. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +64 -0
  125. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  126. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +511 -0
  127. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +115 -0
  128. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
  129. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  130. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +166 -0
  131. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
  132. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +105 -0
  133. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  134. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +249 -0
  135. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
  136. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
  137. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
  138. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
  139. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  140. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +152 -0
  141. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +60 -0
  142. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +83 -0
  143. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
  144. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +82 -0
  145. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
  146. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +83 -0
  147. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  148. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +86 -0
  149. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
  150. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
  151. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
  152. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
  153. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  154. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
  155. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  156. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
  157. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  158. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +73 -0
  159. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  160. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +72 -0
  161. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  162. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
  163. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  164. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
  165. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  166. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
  167. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  168. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
  169. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +30 -0
  170. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
  171. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
  172. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
  173. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
  174. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
  175. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  176. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
  177. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
  178. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
  179. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
  180. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +38 -0
  181. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
  182. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
  183. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
  184. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +39 -0
  185. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
  186. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
  187. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
  188. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
  189. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
  190. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +39 -0
  191. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
  192. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
  193. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
  194. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
  195. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
  196. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
  197. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
  198. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
  199. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
  200. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
  201. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
  202. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
  203. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
  204. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
  205. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
  206. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +42 -0
  207. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +35 -0
  208. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +62 -0
  209. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +40 -0
  210. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +45 -0
  211. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +40 -0
  212. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +49 -0
  213. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +35 -0
  214. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +68 -0
  215. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +40 -0
  216. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +51 -0
  217. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +35 -0
  218. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +307 -0
  219. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
  220. data/src/core/ext/xds/certificate_provider_factory.h +7 -5
  221. data/src/core/ext/xds/certificate_provider_store.cc +84 -0
  222. data/src/core/ext/xds/certificate_provider_store.h +65 -8
  223. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +119 -0
  224. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +72 -0
  225. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +28 -140
  226. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +6 -4
  227. data/src/core/ext/xds/xds_api.cc +241 -718
  228. data/src/core/ext/xds/xds_api.h +50 -9
  229. data/src/core/ext/xds/xds_bootstrap.cc +172 -25
  230. data/src/core/ext/xds/xds_bootstrap.h +23 -7
  231. data/src/core/ext/xds/xds_certificate_provider.cc +240 -0
  232. data/src/core/ext/xds/xds_certificate_provider.h +74 -0
  233. data/src/core/ext/xds/xds_client.cc +161 -128
  234. data/src/core/ext/xds/xds_client.h +12 -11
  235. data/src/core/ext/xds/xds_client_stats.cc +41 -4
  236. data/src/core/ext/xds/xds_client_stats.h +2 -2
  237. data/src/core/lib/channel/channel_args.cc +2 -1
  238. data/src/core/lib/channel/channel_trace.cc +4 -2
  239. data/src/core/lib/channel/channelz.h +2 -2
  240. data/src/core/lib/channel/handshaker.h +2 -2
  241. data/src/core/lib/compression/compression.cc +8 -4
  242. data/src/core/lib/compression/compression_internal.cc +10 -5
  243. data/src/core/lib/compression/compression_internal.h +2 -1
  244. data/src/core/lib/compression/stream_compression_identity.cc +1 -3
  245. data/src/core/lib/debug/stats_data.cc +1 -0
  246. data/src/core/lib/gpr/cpu_iphone.cc +10 -2
  247. data/src/core/lib/gpr/log_linux.cc +17 -3
  248. data/src/core/lib/gpr/log_posix.cc +13 -1
  249. data/src/core/lib/gpr/log_windows.cc +16 -4
  250. data/src/core/lib/gpr/murmur_hash.cc +1 -1
  251. data/src/core/lib/gpr/string.cc +1 -1
  252. data/src/core/lib/gpr/time_precise.cc +3 -2
  253. data/src/core/lib/gpr/tls.h +4 -0
  254. data/src/core/lib/gpr/tls_msvc.h +2 -0
  255. data/src/core/lib/gpr/tls_stdcpp.h +48 -0
  256. data/src/core/lib/gpr/useful.h +5 -4
  257. data/src/core/lib/gprpp/dual_ref_counted.h +44 -49
  258. data/src/core/lib/gprpp/examine_stack.cc +43 -0
  259. data/src/core/lib/gprpp/examine_stack.h +46 -0
  260. data/src/core/lib/gprpp/fork.cc +2 -2
  261. data/src/core/lib/gprpp/manual_constructor.h +1 -1
  262. data/src/core/lib/gprpp/orphanable.h +4 -8
  263. data/src/core/lib/gprpp/ref_counted.h +40 -46
  264. data/src/core/lib/gprpp/ref_counted_ptr.h +9 -11
  265. data/src/core/lib/{security/authorization/mock_cel/statusor.h → gprpp/stat.h} +13 -25
  266. data/src/core/lib/gprpp/stat_posix.cc +49 -0
  267. data/src/core/lib/gprpp/stat_windows.cc +48 -0
  268. data/src/core/lib/gprpp/thd.h +2 -2
  269. data/src/core/lib/gprpp/thd_posix.cc +36 -36
  270. data/src/core/lib/http/parser.cc +46 -25
  271. data/src/core/lib/iomgr/error.cc +2 -1
  272. data/src/core/lib/iomgr/ev_epollex_linux.cc +8 -4
  273. data/src/core/lib/iomgr/exec_ctx.cc +1 -1
  274. data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
  275. data/src/core/lib/iomgr/executor/threadpool.h +3 -3
  276. data/src/core/lib/iomgr/parse_address.cc +84 -6
  277. data/src/core/lib/iomgr/parse_address.h +20 -0
  278. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
  279. data/src/core/lib/iomgr/python_util.h +3 -3
  280. data/src/core/lib/iomgr/resolve_address_posix.cc +1 -5
  281. data/src/core/lib/iomgr/tcp_posix.cc +3 -2
  282. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  283. data/src/core/lib/iomgr/unix_sockets_posix.cc +27 -15
  284. data/src/core/lib/iomgr/unix_sockets_posix.h +5 -0
  285. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +7 -0
  286. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  287. data/src/core/lib/json/json.h +2 -2
  288. data/src/core/lib/json/json_reader.cc +8 -4
  289. data/src/core/lib/json/json_util.h +167 -0
  290. data/src/core/lib/json/json_writer.cc +2 -1
  291. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +3 -1
  292. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +5 -4
  293. data/src/core/lib/security/authorization/mock_cel/cel_value.h +4 -0
  294. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +6 -6
  295. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +10 -9
  296. data/src/core/lib/security/context/security_context.h +3 -1
  297. data/src/core/lib/security/credentials/credentials.cc +1 -1
  298. data/src/core/lib/security/credentials/credentials.h +3 -3
  299. data/src/core/lib/security/credentials/external/aws_request_signer.cc +208 -0
  300. data/src/core/lib/security/credentials/external/aws_request_signer.h +73 -0
  301. data/src/core/lib/security/credentials/external/external_account_credentials.cc +311 -0
  302. data/src/core/lib/security/credentials/external/external_account_credentials.h +118 -0
  303. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +136 -0
  304. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
  305. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +211 -0
  306. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +59 -0
  307. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +51 -0
  308. data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
  309. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
  310. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -1
  311. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +2 -2
  312. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +35 -5
  313. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +12 -8
  314. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +78 -0
  315. data/src/core/lib/security/{certificate_provider.h → credentials/tls/grpc_tls_certificate_provider.h} +32 -18
  316. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +77 -149
  317. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +58 -187
  318. data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -12
  319. data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
  320. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
  321. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +88 -0
  322. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +70 -0
  323. data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
  324. data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
  325. data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
  326. data/src/core/lib/security/security_connector/security_connector.cc +1 -1
  327. data/src/core/lib/security/security_connector/security_connector.h +4 -2
  328. data/src/core/lib/security/security_connector/ssl_utils.h +4 -2
  329. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +293 -275
  330. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +106 -61
  331. data/src/core/lib/security/transport/security_handshaker.cc +1 -1
  332. data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
  333. data/src/core/lib/security/util/json_util.h +1 -0
  334. data/src/core/lib/slice/slice.cc +7 -4
  335. data/src/core/lib/slice/slice_buffer.cc +2 -1
  336. data/src/core/lib/slice/slice_intern.cc +2 -2
  337. data/src/core/lib/surface/call.cc +9 -8
  338. data/src/core/lib/surface/completion_queue.cc +7 -6
  339. data/src/core/lib/surface/server.cc +4 -2
  340. data/src/core/lib/surface/server.h +2 -2
  341. data/src/core/lib/surface/validate_metadata.h +3 -0
  342. data/src/core/lib/surface/version.cc +2 -2
  343. data/src/core/lib/transport/authority_override.h +2 -0
  344. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  345. data/src/core/lib/transport/byte_stream.h +3 -3
  346. data/src/core/lib/transport/connectivity_state.h +3 -3
  347. data/src/core/lib/transport/metadata.h +2 -2
  348. data/src/core/lib/transport/timeout_encoding.cc +4 -4
  349. data/src/core/lib/transport/transport.cc +5 -3
  350. data/src/core/lib/transport/transport.h +1 -1
  351. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
  352. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -3
  353. data/src/core/tsi/fake_transport_security.cc +1 -0
  354. data/src/core/tsi/local_transport_security.cc +5 -1
  355. data/src/core/tsi/local_transport_security.h +6 -7
  356. data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -0
  357. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -1
  358. data/src/core/tsi/ssl_transport_security.cc +14 -7
  359. data/src/core/tsi/ssl_transport_security.h +3 -0
  360. data/src/core/tsi/transport_security.cc +4 -2
  361. data/src/ruby/ext/grpc/extconf.rb +1 -1
  362. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +22 -14
  363. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +36 -24
  364. data/src/ruby/lib/grpc/version.rb +1 -1
  365. data/third_party/abseil-cpp/absl/algorithm/container.h +59 -22
  366. data/third_party/abseil-cpp/absl/base/attributes.h +99 -38
  367. data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
  368. data/third_party/abseil-cpp/absl/base/casts.h +9 -6
  369. data/third_party/abseil-cpp/absl/base/config.h +60 -17
  370. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
  371. data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
  372. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +5 -0
  373. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  374. data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
  375. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +1 -1
  376. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +29 -1
  377. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
  378. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
  379. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
  380. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
  381. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
  382. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
  383. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
  384. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
  385. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
  386. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
  387. data/third_party/abseil-cpp/absl/base/macros.h +36 -109
  388. data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
  389. data/third_party/abseil-cpp/absl/base/options.h +31 -4
  390. data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
  391. data/third_party/abseil-cpp/absl/base/thread_annotations.h +94 -39
  392. data/third_party/abseil-cpp/absl/container/fixed_array.h +42 -25
  393. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +2 -1
  394. data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
  395. data/third_party/abseil-cpp/absl/container/internal/common.h +6 -2
  396. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
  397. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +49 -29
  398. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +15 -0
  399. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +24 -7
  400. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -1
  401. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +35 -11
  402. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +10 -9
  403. data/third_party/abseil-cpp/absl/container/internal/layout.h +7 -5
  404. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +55 -34
  405. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +5 -4
  406. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +66 -16
  407. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +4 -0
  408. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +13 -4
  409. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +43 -24
  410. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +12 -3
  411. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +10 -2
  412. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +22 -1
  413. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +0 -21
  414. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +12 -1
  415. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
  416. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +100 -20
  417. data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
  418. data/third_party/abseil-cpp/absl/functional/function_ref.h +1 -1
  419. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  420. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
  421. data/third_party/abseil-cpp/absl/hash/hash.h +6 -5
  422. data/third_party/abseil-cpp/absl/hash/internal/hash.h +73 -65
  423. data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
  424. data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
  425. data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
  426. data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
  427. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +51 -0
  428. data/third_party/abseil-cpp/absl/status/status.cc +4 -6
  429. data/third_party/abseil-cpp/absl/status/status.h +502 -113
  430. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +5 -10
  431. data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
  432. data/third_party/abseil-cpp/absl/strings/cord.cc +91 -112
  433. data/third_party/abseil-cpp/absl/strings/cord.h +360 -205
  434. data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
  435. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
  436. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  437. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
  438. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
  439. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +45 -23
  440. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
  441. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
  442. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
  443. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
  444. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -14
  445. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
  446. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
  447. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +999 -87
  448. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -3
  449. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
  450. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +8 -6
  451. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
  452. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
  453. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  454. data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
  455. data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
  456. data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
  457. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
  458. data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
  459. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
  460. data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
  461. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +3 -3
  462. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +3 -3
  463. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +28 -28
  464. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +4 -16
  465. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -1
  466. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +8 -0
  467. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -2
  468. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -64
  469. data/third_party/abseil-cpp/absl/synchronization/mutex.h +15 -6
  470. data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -9
  471. data/third_party/abseil-cpp/absl/time/clock.cc +3 -3
  472. data/third_party/abseil-cpp/absl/time/duration.cc +90 -59
  473. data/third_party/abseil-cpp/absl/time/format.cc +43 -36
  474. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +26 -16
  475. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +4 -2
  476. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
  477. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
  478. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
  479. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
  480. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +136 -129
  481. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
  482. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +8 -7
  483. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -6
  484. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
  485. data/third_party/abseil-cpp/absl/time/time.h +15 -16
  486. data/third_party/abseil-cpp/absl/types/internal/variant.h +4 -4
  487. data/third_party/abseil-cpp/absl/types/optional.h +9 -9
  488. data/third_party/abseil-cpp/absl/types/span.h +49 -36
  489. data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
  490. data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
  491. data/third_party/boringssl-with-bazel/err_data.c +340 -336
  492. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
  493. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
  494. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +46 -7
  495. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +8 -2
  496. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +90 -63
  497. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +60 -60
  498. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +179 -47
  499. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
  501. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
  502. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +14 -14
  503. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
  504. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +24 -0
  505. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +7 -5
  506. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -2
  507. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
  508. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
  509. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
  510. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
  511. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +55 -1
  512. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
  513. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +31 -23
  514. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +435 -394
  515. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
  516. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +35 -0
  517. data/third_party/boringssl-with-bazel/src/ssl/internal.h +36 -1
  518. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +42 -1
  519. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +67 -0
  520. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +11 -14
  521. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +216 -11
  522. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +53 -11
  523. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +133 -39
  524. data/third_party/upb/upb/def.c +2169 -0
  525. data/third_party/upb/upb/def.h +330 -0
  526. data/third_party/upb/upb/def.hpp +525 -0
  527. data/third_party/upb/upb/reflection.c +391 -0
  528. data/third_party/upb/upb/reflection.h +168 -0
  529. data/third_party/upb/upb/text_encode.c +398 -0
  530. data/third_party/upb/upb/text_encode.h +35 -0
  531. metadata +227 -37
  532. data/src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc +0 -571
  533. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
@@ -27,49 +27,7 @@
27
27
  #include <grpc/support/log.h>
28
28
  #include <grpc/support/string_util.h>
29
29
 
30
- /** -- gRPC TLS key materials config API implementation. -- **/
31
- void grpc_tls_key_materials_config::set_key_materials(
32
- const char* pem_root_certs,
33
- const grpc_ssl_pem_key_cert_pair** pem_key_cert_pairs,
34
- size_t num_key_cert_pairs) {
35
- this->set_pem_root_certs(pem_root_certs);
36
- grpc_tls_key_materials_config::PemKeyCertPairList cert_pair_list;
37
- for (size_t i = 0; i < num_key_cert_pairs; i++) {
38
- auto current_pair = static_cast<grpc_ssl_pem_key_cert_pair*>(
39
- gpr_zalloc(sizeof(grpc_ssl_pem_key_cert_pair)));
40
- current_pair->cert_chain = gpr_strdup(pem_key_cert_pairs[i]->cert_chain);
41
- current_pair->private_key = gpr_strdup(pem_key_cert_pairs[i]->private_key);
42
- cert_pair_list.emplace_back(grpc_core::PemKeyCertPair(current_pair));
43
- }
44
- pem_key_cert_pair_list_ = std::move(cert_pair_list);
45
- }
46
-
47
- void grpc_tls_key_materials_config::set_key_materials(
48
- const char* pem_root_certs,
49
- const PemKeyCertPairList& pem_key_cert_pair_list) {
50
- this->set_pem_root_certs(pem_root_certs);
51
- grpc_tls_key_materials_config::PemKeyCertPairList dup_list(
52
- pem_key_cert_pair_list);
53
- pem_key_cert_pair_list_ = std::move(dup_list);
54
- }
55
-
56
- /** -- gRPC TLS credential reload config API implementation. -- **/
57
- grpc_tls_credential_reload_config::grpc_tls_credential_reload_config(
58
- const void* config_user_data,
59
- int (*schedule)(void* config_user_data,
60
- grpc_tls_credential_reload_arg* arg),
61
- void (*cancel)(void* config_user_data, grpc_tls_credential_reload_arg* arg),
62
- void (*destruct)(void* config_user_data))
63
- : config_user_data_(const_cast<void*>(config_user_data)),
64
- schedule_(schedule),
65
- cancel_(cancel),
66
- destruct_(destruct) {}
67
-
68
- grpc_tls_credential_reload_config::~grpc_tls_credential_reload_config() {
69
- if (destruct_ != nullptr) {
70
- destruct_((void*)config_user_data_);
71
- }
72
- }
30
+ #include "src/core/lib/surface/api_trace.h"
73
31
 
74
32
  /** -- gRPC TLS server authorization check API implementation. -- **/
75
33
  grpc_tls_server_authorization_check_config::
@@ -92,138 +50,99 @@ grpc_tls_server_authorization_check_config::
92
50
  }
93
51
  }
94
52
 
53
+ int grpc_tls_server_authorization_check_config::Schedule(
54
+ grpc_tls_server_authorization_check_arg* arg) const {
55
+ if (schedule_ == nullptr) {
56
+ gpr_log(GPR_ERROR, "schedule API is nullptr");
57
+ if (arg != nullptr) {
58
+ arg->status = GRPC_STATUS_NOT_FOUND;
59
+ arg->error_details->set_error_details(
60
+ "schedule API in server authorization check config is nullptr");
61
+ }
62
+ return 1;
63
+ }
64
+ if (arg != nullptr && context_ != nullptr) {
65
+ arg->config = const_cast<grpc_tls_server_authorization_check_config*>(this);
66
+ }
67
+ return schedule_(config_user_data_, arg);
68
+ }
69
+
70
+ void grpc_tls_server_authorization_check_config::Cancel(
71
+ grpc_tls_server_authorization_check_arg* arg) const {
72
+ if (cancel_ == nullptr) {
73
+ gpr_log(GPR_ERROR, "cancel API is nullptr.");
74
+ if (arg != nullptr) {
75
+ arg->status = GRPC_STATUS_NOT_FOUND;
76
+ arg->error_details->set_error_details(
77
+ "schedule API in server authorization check config is nullptr");
78
+ }
79
+ return;
80
+ }
81
+ if (arg != nullptr) {
82
+ arg->config = const_cast<grpc_tls_server_authorization_check_config*>(this);
83
+ }
84
+ cancel_(config_user_data_, arg);
85
+ }
86
+
95
87
  /** -- Wrapper APIs declared in grpc_security.h -- **/
88
+
96
89
  grpc_tls_credentials_options* grpc_tls_credentials_options_create() {
97
90
  return new grpc_tls_credentials_options();
98
91
  }
99
92
 
100
- int grpc_tls_credentials_options_set_cert_request_type(
93
+ void grpc_tls_credentials_options_set_cert_request_type(
101
94
  grpc_tls_credentials_options* options,
102
95
  grpc_ssl_client_certificate_request_type type) {
103
- if (options == nullptr) {
104
- gpr_log(GPR_ERROR,
105
- "Invalid nullptr arguments to "
106
- "grpc_tls_credentials_options_set_cert_request_type()");
107
- return 0;
108
- }
96
+ GPR_ASSERT(options != nullptr);
109
97
  options->set_cert_request_type(type);
110
- return 1;
111
98
  }
112
99
 
113
- int grpc_tls_credentials_options_set_server_verification_option(
100
+ void grpc_tls_credentials_options_set_server_verification_option(
114
101
  grpc_tls_credentials_options* options,
115
102
  grpc_tls_server_verification_option server_verification_option) {
116
- if (options == nullptr) {
117
- gpr_log(GPR_ERROR,
118
- "Invalid nullptr arguments to "
119
- "grpc_tls_credentials_options_set_server_verification_option()");
120
- return 0;
121
- }
122
- if (server_verification_option != GRPC_TLS_SERVER_VERIFICATION &&
123
- options->server_authorization_check_config() == nullptr) {
124
- gpr_log(GPR_ERROR,
125
- "server_authorization_check_config needs to be specified when"
126
- "server_verification_option is not GRPC_TLS_SERVER_VERIFICATION");
127
- return 0;
128
- }
103
+ GPR_ASSERT(options != nullptr);
129
104
  options->set_server_verification_option(server_verification_option);
130
- return 1;
131
- }
132
-
133
- int grpc_tls_credentials_options_set_key_materials_config(
134
- grpc_tls_credentials_options* options,
135
- grpc_tls_key_materials_config* config) {
136
- if (options == nullptr || config == nullptr) {
137
- gpr_log(GPR_ERROR,
138
- "Invalid nullptr arguments to "
139
- "grpc_tls_credentials_options_set_key_materials_config()");
140
- return 0;
141
- }
142
- options->set_key_materials_config(config->Ref());
143
- return 1;
144
105
  }
145
106
 
146
- int grpc_tls_credentials_options_set_credential_reload_config(
107
+ void grpc_tls_credentials_options_set_certificate_provider(
147
108
  grpc_tls_credentials_options* options,
148
- grpc_tls_credential_reload_config* config) {
149
- if (options == nullptr || config == nullptr) {
150
- gpr_log(GPR_ERROR,
151
- "Invalid nullptr arguments to "
152
- "grpc_tls_credentials_options_set_credential_reload_config()");
153
- return 0;
154
- }
155
- options->set_credential_reload_config(config->Ref());
156
- return 1;
109
+ grpc_tls_certificate_provider* provider) {
110
+ GPR_ASSERT(options != nullptr);
111
+ GPR_ASSERT(provider != nullptr);
112
+ options->set_certificate_provider(
113
+ provider->Ref(DEBUG_LOCATION, "set_certificate_provider"));
157
114
  }
158
115
 
159
- int grpc_tls_credentials_options_set_server_authorization_check_config(
160
- grpc_tls_credentials_options* options,
161
- grpc_tls_server_authorization_check_config* config) {
162
- if (options == nullptr || config == nullptr) {
163
- gpr_log(
164
- GPR_ERROR,
165
- "Invalid nullptr arguments to "
166
- "grpc_tls_credentials_options_set_server_authorization_check_config()");
167
- return 0;
168
- }
169
- options->set_server_authorization_check_config(config->Ref());
170
- return 1;
116
+ void grpc_tls_credentials_options_watch_root_certs(
117
+ grpc_tls_credentials_options* options) {
118
+ GPR_ASSERT(options != nullptr);
119
+ options->set_watch_root_cert(true);
171
120
  }
172
121
 
173
- grpc_tls_key_materials_config* grpc_tls_key_materials_config_create() {
174
- return new grpc_tls_key_materials_config();
122
+ void grpc_tls_credentials_options_set_root_cert_name(
123
+ grpc_tls_credentials_options* options, const char* root_cert_name) {
124
+ GPR_ASSERT(options != nullptr);
125
+ options->set_root_cert_name(root_cert_name);
175
126
  }
176
127
 
177
- int grpc_tls_key_materials_config_set_key_materials(
178
- grpc_tls_key_materials_config* config, const char* root_certs,
179
- const grpc_ssl_pem_key_cert_pair** key_cert_pairs, size_t num) {
180
- if (config == nullptr || key_cert_pairs == nullptr || num == 0) {
181
- gpr_log(GPR_ERROR,
182
- "Invalid arguments to "
183
- "grpc_tls_key_materials_config_set_key_materials()");
184
- return 0;
185
- }
186
- config->set_key_materials(root_certs, key_cert_pairs, num);
187
- return 1;
188
- }
189
-
190
- int grpc_tls_key_materials_config_set_version(
191
- grpc_tls_key_materials_config* config, int version) {
192
- if (config == nullptr) {
193
- gpr_log(GPR_ERROR,
194
- "Invalid arguments to "
195
- "grpc_tls_key_materials_config_set_version()");
196
- return 0;
197
- }
198
- config->set_version(version);
199
- return 1;
128
+ void grpc_tls_credentials_options_watch_identity_key_cert_pairs(
129
+ grpc_tls_credentials_options* options) {
130
+ GPR_ASSERT(options != nullptr);
131
+ options->set_watch_identity_pair(true);
200
132
  }
201
133
 
202
- int grpc_tls_key_materials_config_get_version(
203
- grpc_tls_key_materials_config* config) {
204
- if (config == nullptr) {
205
- gpr_log(GPR_ERROR,
206
- "Invalid arguments to "
207
- "grpc_tls_key_materials_config_get_version()");
208
- return -1;
209
- }
210
- return config->version();
134
+ void grpc_tls_credentials_options_set_identity_cert_name(
135
+ grpc_tls_credentials_options* options, const char* identity_cert_name) {
136
+ GPR_ASSERT(options != nullptr);
137
+ options->set_identity_cert_name(identity_cert_name);
211
138
  }
212
139
 
213
- grpc_tls_credential_reload_config* grpc_tls_credential_reload_config_create(
214
- const void* config_user_data,
215
- int (*schedule)(void* config_user_data,
216
- grpc_tls_credential_reload_arg* arg),
217
- void (*cancel)(void* config_user_data, grpc_tls_credential_reload_arg* arg),
218
- void (*destruct)(void* config_user_data)) {
219
- if (schedule == nullptr) {
220
- gpr_log(
221
- GPR_ERROR,
222
- "Schedule API is nullptr in creating TLS credential reload config.");
223
- return nullptr;
224
- }
225
- return new grpc_tls_credential_reload_config(config_user_data, schedule,
226
- cancel, destruct);
140
+ void grpc_tls_credentials_options_set_server_authorization_check_config(
141
+ grpc_tls_credentials_options* options,
142
+ grpc_tls_server_authorization_check_config* config) {
143
+ GPR_ASSERT(options != nullptr);
144
+ GPR_ASSERT(config != nullptr);
145
+ options->set_server_authorization_check_config(config->Ref());
227
146
  }
228
147
 
229
148
  grpc_tls_server_authorization_check_config*
@@ -243,3 +162,12 @@ grpc_tls_server_authorization_check_config_create(
243
162
  return new grpc_tls_server_authorization_check_config(
244
163
  config_user_data, schedule, cancel, destruct);
245
164
  }
165
+
166
+ void grpc_tls_server_authorization_check_config_release(
167
+ grpc_tls_server_authorization_check_config* config) {
168
+ GRPC_API_TRACE(
169
+ "grpc_tls_server_authorization_check_config_release(config=%p)", 1,
170
+ (config));
171
+ grpc_core::ExecCtx exec_ctx;
172
+ if (config != nullptr) config->Unref();
173
+ }
@@ -26,6 +26,8 @@
26
26
  #include "absl/container/inlined_vector.h"
27
27
 
28
28
  #include "src/core/lib/gprpp/ref_counted.h"
29
+ #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
30
+ #include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
29
31
  #include "src/core/lib/security/security_connector/ssl_utils.h"
30
32
 
31
33
  struct grpc_tls_error_details
@@ -41,126 +43,6 @@ struct grpc_tls_error_details
41
43
  std::string error_details_;
42
44
  };
43
45
 
44
- /** TLS key materials config. **/
45
- struct grpc_tls_key_materials_config
46
- : public grpc_core::RefCounted<grpc_tls_key_materials_config> {
47
- public:
48
- typedef absl::InlinedVector<grpc_core::PemKeyCertPair, 1> PemKeyCertPairList;
49
-
50
- /** Getters for member fields. **/
51
- const char* pem_root_certs() const { return pem_root_certs_.get(); }
52
- const PemKeyCertPairList& pem_key_cert_pair_list() const {
53
- return pem_key_cert_pair_list_;
54
- }
55
- int version() const { return version_; }
56
-
57
- /** Setters for member fields. **/
58
- // TODO(ZhenLian): Remove this function
59
- void set_pem_root_certs(grpc_core::UniquePtr<char> pem_root_certs) {
60
- pem_root_certs_ = std::move(pem_root_certs);
61
- }
62
- // The ownerships of |pem_root_certs| remain with the caller.
63
- void set_pem_root_certs(const char* pem_root_certs) {
64
- // make a copy of pem_root_certs.
65
- grpc_core::UniquePtr<char> pem_root_ptr(gpr_strdup(pem_root_certs));
66
- pem_root_certs_ = std::move(pem_root_ptr);
67
- }
68
- void add_pem_key_cert_pair(grpc_core::PemKeyCertPair pem_key_cert_pair) {
69
- pem_key_cert_pair_list_.push_back(pem_key_cert_pair);
70
- }
71
- // The ownerships of |pem_root_certs| and |pem_key_cert_pairs| remain with the
72
- // caller.
73
- void set_key_materials(const char* pem_root_certs,
74
- const grpc_ssl_pem_key_cert_pair** pem_key_cert_pairs,
75
- size_t num_key_cert_pairs);
76
- // The ownerships of |pem_root_certs| and |pem_key_cert_pair_list| remain with
77
- // the caller.
78
- void set_key_materials(const char* pem_root_certs,
79
- const PemKeyCertPairList& pem_key_cert_pair_list);
80
- void set_version(int version) { version_ = version; }
81
-
82
- private:
83
- int version_ = 0;
84
- PemKeyCertPairList pem_key_cert_pair_list_;
85
- grpc_core::UniquePtr<char> pem_root_certs_;
86
- };
87
-
88
- /** TLS credential reload config. **/
89
- struct grpc_tls_credential_reload_config
90
- : public grpc_core::RefCounted<grpc_tls_credential_reload_config> {
91
- public:
92
- grpc_tls_credential_reload_config(
93
- const void* config_user_data,
94
- int (*schedule)(void* config_user_data,
95
- grpc_tls_credential_reload_arg* arg),
96
- void (*cancel)(void* config_user_data,
97
- grpc_tls_credential_reload_arg* arg),
98
- void (*destruct)(void* config_user_data));
99
- ~grpc_tls_credential_reload_config();
100
-
101
- void* context() const { return context_; }
102
- void set_context(void* context) { context_ = context; }
103
-
104
- int Schedule(grpc_tls_credential_reload_arg* arg) const {
105
- if (schedule_ == nullptr) {
106
- gpr_log(GPR_ERROR, "schedule API is nullptr");
107
- if (arg != nullptr) {
108
- arg->status = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL;
109
- arg->error_details->set_error_details(
110
- "schedule API in credential reload config is nullptr");
111
- }
112
- return 1;
113
- }
114
- if (arg != nullptr) {
115
- arg->config = const_cast<grpc_tls_credential_reload_config*>(this);
116
- }
117
- return schedule_(config_user_data_, arg);
118
- }
119
- void Cancel(grpc_tls_credential_reload_arg* arg) const {
120
- if (cancel_ == nullptr) {
121
- gpr_log(GPR_ERROR, "cancel API is nullptr.");
122
- if (arg != nullptr) {
123
- arg->status = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL;
124
- arg->error_details->set_error_details(
125
- "cancel API in credential reload config is nullptr");
126
- }
127
- return;
128
- }
129
- if (arg != nullptr) {
130
- arg->config = const_cast<grpc_tls_credential_reload_config*>(this);
131
- }
132
- cancel_(config_user_data_, arg);
133
- }
134
-
135
- private:
136
- /** This is a pointer to the wrapped language implementation of
137
- * grpc_tls_credential_reload_config. It is necessary to implement the C
138
- * schedule and cancel functions, given the schedule or cancel function in a
139
- * wrapped language. **/
140
- void* context_ = nullptr;
141
- /** config-specific, read-only user data that works for all channels created
142
- with a credential using the config. */
143
- void* config_user_data_;
144
- /** callback function for invoking credential reload API. The implementation
145
- of this method has to be non-blocking, but can be performed synchronously
146
- or asynchronously.
147
- If processing occurs synchronously, it populates \a arg->key_materials, \a
148
- arg->status, and \a arg->error_details and returns zero.
149
- If processing occurs asynchronously, it returns a non-zero value.
150
- Application then invokes \a arg->cb when processing is completed. Note that
151
- \a arg->cb cannot be invoked before \a schedule returns.
152
- */
153
- int (*schedule_)(void* config_user_data, grpc_tls_credential_reload_arg* arg);
154
- /** callback function for cancelling a credential reload request scheduled via
155
- an asynchronous \a schedule. \a arg is used to pinpoint an exact reloading
156
- request to be cancelled, and the operation may not have any effect if the
157
- request has already been processed. */
158
- void (*cancel_)(void* config_user_data, grpc_tls_credential_reload_arg* arg);
159
- /** callback function for cleaning up any data associated with credential
160
- reload config. */
161
- void (*destruct_)(void* config_user_data);
162
- };
163
-
164
46
  /** TLS server authorization check config. **/
165
47
  struct grpc_tls_server_authorization_check_config
166
48
  : public grpc_core::RefCounted<grpc_tls_server_authorization_check_config> {
@@ -172,43 +54,15 @@ struct grpc_tls_server_authorization_check_config
172
54
  void (*cancel)(void* config_user_data,
173
55
  grpc_tls_server_authorization_check_arg* arg),
174
56
  void (*destruct)(void* config_user_data));
175
- ~grpc_tls_server_authorization_check_config();
57
+ ~grpc_tls_server_authorization_check_config() override;
176
58
 
177
59
  void* context() const { return context_; }
60
+
178
61
  void set_context(void* context) { context_ = context; }
179
62
 
180
- int Schedule(grpc_tls_server_authorization_check_arg* arg) const {
181
- if (schedule_ == nullptr) {
182
- gpr_log(GPR_ERROR, "schedule API is nullptr");
183
- if (arg != nullptr) {
184
- arg->status = GRPC_STATUS_NOT_FOUND;
185
- arg->error_details->set_error_details(
186
- "schedule API in server authorization check config is nullptr");
187
- }
188
- return 1;
189
- }
190
- if (arg != nullptr && context_ != nullptr) {
191
- arg->config =
192
- const_cast<grpc_tls_server_authorization_check_config*>(this);
193
- }
194
- return schedule_(config_user_data_, arg);
195
- }
196
- void Cancel(grpc_tls_server_authorization_check_arg* arg) const {
197
- if (cancel_ == nullptr) {
198
- gpr_log(GPR_ERROR, "cancel API is nullptr.");
199
- if (arg != nullptr) {
200
- arg->status = GRPC_STATUS_NOT_FOUND;
201
- arg->error_details->set_error_details(
202
- "schedule API in server authorization check config is nullptr");
203
- }
204
- return;
205
- }
206
- if (arg != nullptr) {
207
- arg->config =
208
- const_cast<grpc_tls_server_authorization_check_config*>(this);
209
- }
210
- cancel_(config_user_data_, arg);
211
- }
63
+ int Schedule(grpc_tls_server_authorization_check_arg* arg) const;
64
+
65
+ void Cancel(grpc_tls_server_authorization_check_arg* arg) const;
212
66
 
213
67
  private:
214
68
  /** This is a pointer to the wrapped language implementation of
@@ -241,23 +95,15 @@ struct grpc_tls_server_authorization_check_config
241
95
  void (*destruct_)(void* config_user_data);
242
96
  };
243
97
 
244
- /* TLS credentials options. */
98
+ // Contains configurable options specified by callers to configure their certain
99
+ // security features supported in TLS.
100
+ // TODO(ZhenLian): consider making this not ref-counted.
245
101
  struct grpc_tls_credentials_options
246
102
  : public grpc_core::RefCounted<grpc_tls_credentials_options> {
247
103
  public:
248
- ~grpc_tls_credentials_options() {
249
- if (key_materials_config_.get() != nullptr) {
250
- key_materials_config_.get()->Unref();
251
- }
252
- if (credential_reload_config_.get() != nullptr) {
253
- credential_reload_config_.get()->Unref();
254
- }
255
- if (server_authorization_check_config_.get() != nullptr) {
256
- server_authorization_check_config_.get()->Unref();
257
- }
258
- }
104
+ ~grpc_tls_credentials_options() override = default;
259
105
 
260
- /* Getters for member fields. */
106
+ // Getters for member fields.
261
107
  grpc_ssl_client_certificate_request_type cert_request_type() const {
262
108
  return cert_request_type_;
263
109
  }
@@ -266,18 +112,21 @@ struct grpc_tls_credentials_options
266
112
  }
267
113
  grpc_tls_version min_tls_version() const { return min_tls_version_; }
268
114
  grpc_tls_version max_tls_version() const { return max_tls_version_; }
269
- grpc_tls_key_materials_config* key_materials_config() const {
270
- return key_materials_config_.get();
271
- }
272
- grpc_tls_credential_reload_config* credential_reload_config() const {
273
- return credential_reload_config_.get();
274
- }
275
115
  grpc_tls_server_authorization_check_config*
276
116
  server_authorization_check_config() const {
277
117
  return server_authorization_check_config_.get();
278
118
  }
119
+ // Returns the distributor from provider_ if it is set, nullptr otherwise.
120
+ grpc_tls_certificate_distributor* certificate_distributor() {
121
+ if (provider_ != nullptr) return provider_->distributor().get();
122
+ return nullptr;
123
+ }
124
+ bool watch_root_cert() { return watch_root_cert_; }
125
+ const std::string& root_cert_name() { return root_cert_name_; }
126
+ bool watch_identity_pair() { return watch_identity_pair_; }
127
+ const std::string& identity_cert_name() { return identity_cert_name_; }
279
128
 
280
- /* Setters for member fields. */
129
+ // Setters for member fields.
281
130
  void set_cert_request_type(
282
131
  const grpc_ssl_client_certificate_request_type type) {
283
132
  cert_request_type_ = type;
@@ -292,32 +141,54 @@ struct grpc_tls_credentials_options
292
141
  void set_max_tls_version(grpc_tls_version max_tls_version) {
293
142
  max_tls_version_ = max_tls_version;
294
143
  }
295
- void set_key_materials_config(
296
- grpc_core::RefCountedPtr<grpc_tls_key_materials_config> config) {
297
- key_materials_config_ = std::move(config);
298
- }
299
- void set_credential_reload_config(
300
- grpc_core::RefCountedPtr<grpc_tls_credential_reload_config> config) {
301
- credential_reload_config_ = std::move(config);
302
- }
303
144
  void set_server_authorization_check_config(
304
145
  grpc_core::RefCountedPtr<grpc_tls_server_authorization_check_config>
305
146
  config) {
306
147
  server_authorization_check_config_ = std::move(config);
307
148
  }
149
+ // Sets the provider in the options.
150
+ // This should only be used by C-core API for Tls*Creds case.
151
+ void set_certificate_provider(
152
+ grpc_core::RefCountedPtr<grpc_tls_certificate_provider> provider) {
153
+ provider_ = std::move(provider);
154
+ }
155
+ // If need to watch the updates of root certificates with name
156
+ // |root_cert_name|. The default value is false. If used in tls_credentials,
157
+ // it should always be set to true unless the root certificates are not
158
+ // needed.
159
+ void set_watch_root_cert(bool watch) { watch_root_cert_ = watch; }
160
+ // Sets the name of root certificates being watched, if |set_watch_root_cert|
161
+ // is called. If not set, an empty string will be used as the name.
162
+ void set_root_cert_name(std::string root_cert_name) {
163
+ root_cert_name_ = std::move(root_cert_name);
164
+ }
165
+ // If need to watch the updates of identity certificates with name
166
+ // |identity_cert_name|.
167
+ // The default value is false.
168
+ // If used in tls_credentials, it should always be set to true
169
+ // unless the identity key-cert pairs are not needed.
170
+ void set_watch_identity_pair(bool watch) { watch_identity_pair_ = watch; }
171
+ // Sets the name of identity key-cert pairs being watched, if
172
+ // |set_watch_identity_pair| is called. If not set, an empty string will
173
+ // be used as the name.
174
+ void set_identity_cert_name(std::string identity_cert_name) {
175
+ identity_cert_name_ = std::move(identity_cert_name);
176
+ }
308
177
 
309
178
  private:
310
- grpc_ssl_client_certificate_request_type cert_request_type_;
179
+ grpc_ssl_client_certificate_request_type cert_request_type_ =
180
+ GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE;
311
181
  grpc_tls_server_verification_option server_verification_option_ =
312
182
  GRPC_TLS_SERVER_VERIFICATION;
313
183
  grpc_tls_version min_tls_version_ = grpc_tls_version::TLS1_2;
314
184
  grpc_tls_version max_tls_version_ = grpc_tls_version::TLS1_3;
315
- grpc_core::RefCountedPtr<grpc_tls_key_materials_config> key_materials_config_;
316
- grpc_core::RefCountedPtr<grpc_tls_credential_reload_config>
317
- credential_reload_config_;
318
185
  grpc_core::RefCountedPtr<grpc_tls_server_authorization_check_config>
319
186
  server_authorization_check_config_;
187
+ grpc_core::RefCountedPtr<grpc_tls_certificate_provider> provider_;
188
+ bool watch_root_cert_ = false;
189
+ std::string root_cert_name_;
190
+ bool watch_identity_pair_ = false;
191
+ std::string identity_cert_name_;
320
192
  };
321
193
 
322
- #endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_TLS_GRPC_TLS_CREDENTIALS_OPTIONS_H \
323
- */
194
+ #endif // GRPC_CORE_LIB_SECURITY_CREDENTIALS_TLS_GRPC_TLS_CREDENTIALS_OPTIONS_H