grpc 1.28.0 → 1.30.2

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 (503) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +7694 -11190
  3. data/include/grpc/grpc.h +2 -2
  4. data/include/grpc/grpc_security.h +30 -9
  5. data/include/grpc/grpc_security_constants.h +1 -0
  6. data/include/grpc/impl/codegen/grpc_types.h +19 -21
  7. data/include/grpc/impl/codegen/port_platform.h +6 -2
  8. data/include/grpc/module.modulemap +24 -39
  9. data/src/core/ext/filters/client_channel/backend_metric.cc +7 -4
  10. data/src/core/ext/filters/client_channel/client_channel.cc +212 -241
  11. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
  12. data/src/core/ext/filters/client_channel/health/health_check_client.cc +7 -22
  13. data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
  14. data/src/core/ext/filters/client_channel/http_proxy.cc +17 -10
  15. data/src/core/ext/filters/client_channel/lb_policy.cc +19 -18
  16. data/src/core/ext/filters/client_channel/lb_policy.h +42 -33
  17. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
  18. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
  19. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +10 -4
  20. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +240 -301
  21. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +89 -0
  22. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +40 -0
  23. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +11 -9
  24. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
  25. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
  26. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +1 -1
  27. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +5 -11
  28. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
  29. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +84 -37
  30. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
  31. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
  32. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -2
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +834 -0
  34. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +6 -2
  35. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
  36. data/src/core/ext/filters/client_channel/parse_address.cc +22 -21
  37. data/src/core/ext/filters/client_channel/resolver.cc +5 -8
  38. data/src/core/ext/filters/client_channel/resolver.h +12 -14
  39. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +73 -59
  40. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +35 -35
  41. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -7
  42. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +16 -20
  43. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
  44. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +72 -117
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +184 -133
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -3
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +7 -4
  48. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +40 -43
  49. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +93 -102
  50. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +0 -4
  51. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +2 -2
  52. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +32 -5
  53. data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
  54. data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -3
  55. data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
  56. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +16 -16
  57. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +19 -16
  58. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +20 -31
  59. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +4 -3
  60. data/src/core/ext/filters/client_channel/server_address.cc +6 -9
  61. data/src/core/ext/filters/client_channel/server_address.h +6 -12
  62. data/src/core/ext/filters/client_channel/service_config.cc +104 -144
  63. data/src/core/ext/filters/client_channel/service_config.h +28 -98
  64. data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
  65. data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
  66. data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
  67. data/src/core/ext/filters/client_channel/subchannel.cc +54 -24
  68. data/src/core/ext/filters/client_channel/subchannel.h +35 -11
  69. data/src/core/ext/filters/client_channel/xds/xds_api.cc +348 -221
  70. data/src/core/ext/filters/client_channel/xds/xds_api.h +37 -37
  71. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +44 -49
  72. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +4 -3
  73. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +4 -2
  74. data/src/core/ext/filters/client_channel/xds/xds_client.cc +532 -339
  75. data/src/core/ext/filters/client_channel/xds/xds_client.h +57 -22
  76. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +11 -12
  77. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +31 -19
  78. data/src/core/ext/filters/http/client/http_client_filter.cc +23 -28
  79. data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
  80. data/src/core/ext/filters/http/http_filters_plugin.cc +27 -12
  81. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
  82. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +358 -0
  83. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +29 -0
  84. data/src/core/ext/filters/message_size/message_size_filter.cc +7 -10
  85. data/src/core/ext/filters/message_size/message_size_filter.h +4 -4
  86. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +4 -4
  87. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
  88. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +23 -22
  89. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
  90. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  91. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
  92. data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
  93. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
  94. data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
  95. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
  96. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +29 -16
  97. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
  98. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
  99. data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
  100. data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
  101. data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
  102. data/src/core/ext/transport/chttp2/transport/internal.h +14 -21
  103. data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
  104. data/src/core/ext/transport/chttp2/transport/writing.cc +15 -8
  105. data/src/core/ext/transport/inproc/inproc_transport.cc +19 -0
  106. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +4 -229
  107. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +5 -875
  108. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
  109. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +418 -0
  110. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
  111. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +197 -0
  112. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
  113. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +378 -0
  114. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +1 -0
  115. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +21 -8
  116. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +43 -7
  117. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +1 -0
  118. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +1 -0
  119. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +1 -0
  120. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +2 -1
  121. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
  122. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +78 -0
  123. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +47 -26
  124. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +115 -65
  125. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +1 -0
  126. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
  127. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +72 -0
  128. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +2 -1
  129. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +24 -20
  130. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +28 -13
  131. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +1 -0
  132. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +38 -18
  133. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +88 -6
  134. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
  135. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +89 -0
  136. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -0
  137. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +1 -0
  138. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +1 -0
  139. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +1 -0
  140. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +9 -6
  141. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +12 -4
  142. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +1 -0
  143. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +1 -0
  144. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +15 -10
  145. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +16 -0
  146. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +1 -0
  147. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +2 -1
  148. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +1 -0
  149. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +1 -0
  150. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +1 -0
  151. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +1 -0
  152. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +63 -41
  153. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +173 -77
  154. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +1 -0
  155. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +1 -0
  156. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +1 -0
  157. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +48 -28
  158. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +90 -30
  159. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +1 -0
  160. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
  161. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
  162. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +1 -0
  163. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +4 -2
  164. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +4 -0
  165. data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
  166. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +16 -0
  167. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +36 -0
  168. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +1 -0
  169. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +1 -0
  170. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
  171. data/src/core/ext/upb-generated/envoy/type/range.upb.c +1 -0
  172. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +1 -0
  173. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +1 -0
  174. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +9 -8
  175. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +30 -24
  176. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
  177. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +65 -0
  178. data/src/core/ext/upb-generated/validate/validate.upb.c +21 -20
  179. data/src/core/ext/upb-generated/validate/validate.upb.h +69 -63
  180. data/src/core/lib/channel/channel_args.cc +15 -14
  181. data/src/core/lib/channel/channel_args.h +3 -1
  182. data/src/core/lib/channel/channel_stack.h +20 -13
  183. data/src/core/lib/channel/channelz.cc +5 -6
  184. data/src/core/lib/channel/channelz.h +3 -2
  185. data/src/core/lib/channel/channelz_registry.cc +5 -3
  186. data/src/core/lib/channel/connected_channel.cc +7 -5
  187. data/src/core/lib/channel/context.h +1 -1
  188. data/src/core/lib/channel/handshaker.cc +11 -13
  189. data/src/core/lib/channel/handshaker.h +4 -2
  190. data/src/core/lib/channel/handshaker_registry.cc +5 -17
  191. data/src/core/lib/channel/status_util.cc +2 -3
  192. data/src/core/lib/compression/message_compress.cc +5 -1
  193. data/src/core/lib/debug/stats.cc +21 -27
  194. data/src/core/lib/debug/stats.h +3 -1
  195. data/src/core/lib/gpr/spinlock.h +2 -3
  196. data/src/core/lib/gpr/string.cc +2 -26
  197. data/src/core/lib/gpr/string.h +0 -16
  198. data/src/core/lib/gpr/sync_abseil.cc +2 -0
  199. data/src/core/lib/gpr/time.cc +4 -0
  200. data/src/core/lib/gpr/time_posix.cc +1 -1
  201. data/src/core/lib/gprpp/atomic.h +6 -6
  202. data/src/core/lib/gprpp/fork.cc +1 -1
  203. data/src/core/lib/gprpp/host_port.cc +29 -35
  204. data/src/core/lib/gprpp/host_port.h +14 -17
  205. data/src/core/lib/gprpp/map.h +5 -11
  206. data/src/core/lib/gprpp/ref_counted_ptr.h +5 -0
  207. data/src/core/lib/http/format_request.cc +46 -65
  208. data/src/core/lib/http/httpcli.cc +2 -3
  209. data/src/core/lib/http/httpcli.h +2 -3
  210. data/src/core/lib/http/httpcli_security_connector.cc +5 -5
  211. data/src/core/lib/http/parser.h +2 -3
  212. data/src/core/lib/iomgr/buffer_list.h +22 -21
  213. data/src/core/lib/iomgr/call_combiner.h +3 -2
  214. data/src/core/lib/iomgr/cfstream_handle.cc +3 -2
  215. data/src/core/lib/iomgr/closure.h +2 -3
  216. data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
  217. data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -3
  218. data/src/core/lib/iomgr/endpoint_pair.h +2 -3
  219. data/src/core/lib/iomgr/error.cc +6 -9
  220. data/src/core/lib/iomgr/error.h +0 -1
  221. data/src/core/lib/iomgr/ev_apple.cc +356 -0
  222. data/src/core/lib/iomgr/ev_apple.h +43 -0
  223. data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -23
  224. data/src/core/lib/iomgr/ev_epollex_linux.cc +2 -3
  225. data/src/core/lib/iomgr/ev_poll_posix.cc +3 -3
  226. data/src/core/lib/iomgr/ev_posix.cc +2 -3
  227. data/src/core/lib/iomgr/exec_ctx.h +14 -2
  228. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
  229. data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
  230. data/src/core/lib/{gprpp/optional.h → iomgr/pollset_uv.h} +11 -12
  231. data/src/core/lib/iomgr/port.h +1 -0
  232. data/src/core/lib/iomgr/python_util.h +46 -0
  233. data/src/core/lib/iomgr/resolve_address.h +4 -6
  234. data/src/core/lib/iomgr/resolve_address_custom.cc +29 -39
  235. data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
  236. data/src/core/lib/iomgr/resolve_address_posix.cc +10 -11
  237. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -17
  238. data/src/core/lib/iomgr/resource_quota.cc +4 -6
  239. data/src/core/lib/iomgr/sockaddr_utils.cc +23 -29
  240. data/src/core/lib/iomgr/sockaddr_utils.h +9 -14
  241. data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
  242. data/src/core/lib/iomgr/socket_mutator.h +2 -3
  243. data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -26
  244. data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
  245. data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -7
  246. data/src/core/lib/iomgr/tcp_client_posix.cc +8 -5
  247. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
  248. data/src/core/lib/iomgr/tcp_custom.cc +2 -3
  249. data/src/core/lib/iomgr/tcp_server_custom.cc +5 -9
  250. data/src/core/lib/iomgr/tcp_server_posix.cc +5 -4
  251. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -4
  252. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -11
  253. data/src/core/lib/iomgr/tcp_uv.cc +3 -2
  254. data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
  255. data/src/core/lib/iomgr/timer_generic.cc +2 -3
  256. data/src/core/lib/{gprpp/inlined_vector.h → iomgr/timer_generic.h} +19 -17
  257. data/src/core/lib/iomgr/timer_heap.h +2 -3
  258. data/src/core/lib/iomgr/udp_server.cc +9 -14
  259. data/src/core/lib/json/json.h +3 -2
  260. data/src/core/lib/json/json_reader.cc +5 -5
  261. data/src/core/lib/json/json_writer.cc +13 -12
  262. data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
  263. data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
  264. data/src/core/lib/security/credentials/credentials.cc +0 -84
  265. data/src/core/lib/security/credentials/credentials.h +8 -59
  266. data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
  267. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +3 -8
  268. data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
  269. data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
  270. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
  271. data/src/core/lib/security/credentials/jwt/json_token.h +2 -5
  272. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
  273. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +8 -15
  274. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
  275. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +55 -27
  276. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +9 -3
  277. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +13 -0
  278. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
  279. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -13
  280. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +38 -11
  281. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +21 -6
  282. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -7
  283. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
  284. data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
  285. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  286. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +20 -25
  287. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -6
  288. data/src/core/lib/security/security_connector/ssl_utils.cc +59 -12
  289. data/src/core/lib/security/security_connector/ssl_utils.h +12 -10
  290. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +77 -51
  291. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -5
  292. data/src/core/lib/security/transport/auth_filters.h +0 -5
  293. data/src/core/lib/security/transport/client_auth_filter.cc +1 -2
  294. data/src/core/lib/slice/slice_intern.cc +2 -3
  295. data/src/core/lib/slice/slice_internal.h +14 -0
  296. data/src/core/lib/slice/slice_utils.h +9 -0
  297. data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
  298. data/src/core/lib/surface/call.cc +2 -3
  299. data/src/core/lib/surface/call_log_batch.cc +50 -58
  300. data/src/core/lib/surface/channel.cc +53 -31
  301. data/src/core/lib/surface/channel.h +35 -4
  302. data/src/core/lib/surface/channel_ping.cc +2 -3
  303. data/src/core/lib/surface/completion_queue.cc +33 -33
  304. data/src/core/lib/surface/event_string.cc +18 -25
  305. data/src/core/lib/surface/event_string.h +3 -1
  306. data/src/core/lib/surface/init_secure.cc +1 -4
  307. data/src/core/lib/surface/server.cc +570 -369
  308. data/src/core/lib/surface/server.h +32 -0
  309. data/src/core/lib/surface/version.cc +2 -2
  310. data/src/core/lib/transport/byte_stream.h +7 -2
  311. data/src/core/lib/transport/connectivity_state.cc +7 -6
  312. data/src/core/lib/transport/connectivity_state.h +5 -3
  313. data/src/core/lib/transport/metadata.cc +3 -3
  314. data/src/core/lib/transport/metadata_batch.h +2 -3
  315. data/src/core/lib/transport/static_metadata.h +1 -1
  316. data/src/core/lib/transport/status_conversion.cc +6 -14
  317. data/src/core/lib/transport/transport.cc +2 -3
  318. data/src/core/lib/transport/transport.h +3 -2
  319. data/src/core/lib/transport/transport_op_string.cc +61 -102
  320. data/src/core/lib/uri/uri_parser.h +2 -3
  321. data/src/core/plugin_registry/grpc_plugin_registry.cc +20 -4
  322. data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
  323. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +8 -1
  324. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
  325. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -2
  326. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
  327. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
  328. data/src/core/tsi/fake_transport_security.cc +10 -15
  329. data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
  330. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +0 -2
  331. data/src/core/tsi/ssl_transport_security.cc +52 -39
  332. data/src/core/tsi/ssl_transport_security.h +8 -8
  333. data/src/core/tsi/ssl_types.h +0 -2
  334. data/src/core/tsi/transport_security.h +6 -9
  335. data/src/core/tsi/transport_security_grpc.h +2 -3
  336. data/src/core/tsi/transport_security_interface.h +3 -3
  337. data/src/ruby/ext/grpc/rb_call.c +9 -1
  338. data/src/ruby/ext/grpc/rb_call_credentials.c +3 -2
  339. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
  340. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
  341. data/src/ruby/lib/grpc/errors.rb +103 -42
  342. data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
  343. data/src/ruby/lib/grpc/generic/interceptors.rb +4 -4
  344. data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
  345. data/src/ruby/lib/grpc/generic/service.rb +5 -4
  346. data/src/ruby/lib/grpc/structs.rb +1 -1
  347. data/src/ruby/lib/grpc/version.rb +1 -1
  348. data/src/ruby/pb/generate_proto_ruby.sh +5 -3
  349. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +11 -0
  350. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
  351. data/src/ruby/spec/debug_message_spec.rb +134 -0
  352. data/src/ruby/spec/generic/service_spec.rb +2 -0
  353. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
  354. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +7 -0
  355. data/src/ruby/spec/pb/codegen/package_option_spec.rb +7 -1
  356. data/src/ruby/spec/support/services.rb +10 -4
  357. data/src/ruby/spec/testdata/ca.pem +18 -13
  358. data/src/ruby/spec/testdata/client.key +26 -14
  359. data/src/ruby/spec/testdata/client.pem +18 -12
  360. data/src/ruby/spec/testdata/server1.key +26 -14
  361. data/src/ruby/spec/testdata/server1.pem +20 -14
  362. data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
  363. data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
  364. data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
  365. data/third_party/abseil-cpp/absl/time/clock.h +74 -0
  366. data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
  367. data/third_party/abseil-cpp/absl/time/format.cc +153 -0
  368. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
  369. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
  370. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
  371. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
  372. data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
  373. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
  374. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
  375. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
  376. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
  377. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
  378. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
  379. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
  380. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
  381. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
  382. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
  383. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
  384. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
  385. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
  386. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
  387. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
  388. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
  389. data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
  390. data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
  391. data/third_party/abseil-cpp/absl/time/time.cc +499 -0
  392. data/third_party/abseil-cpp/absl/time/time.h +1584 -0
  393. data/third_party/boringssl-with-bazel/err_data.c +329 -297
  394. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
  395. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +7 -5
  396. data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +13 -4
  397. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +11 -0
  398. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519.c +18 -26
  399. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519_tables.h +13 -21
  400. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/internal.h +14 -22
  401. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +1 -1
  402. data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +15 -0
  403. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -0
  404. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +425 -0
  405. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +78 -0
  406. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +2 -2
  407. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +33 -32
  408. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
  409. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +2 -1
  410. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +3 -3
  411. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +14 -11
  412. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +8 -8
  413. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +30 -154
  414. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +16 -0
  415. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +289 -117
  416. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +13 -27
  417. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
  418. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +25 -7
  419. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +432 -160
  420. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +63 -71
  421. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +5 -14
  422. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9481 -9485
  423. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +80 -99
  424. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +736 -0
  425. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
  426. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +90 -11
  427. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +125 -148
  428. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +189 -3
  429. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +61 -18
  430. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +2 -2
  431. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
  432. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
  433. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
  434. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
  435. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +41 -5
  436. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +32 -17
  437. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +24 -114
  438. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +4 -0
  439. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +1 -0
  440. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +51 -38
  441. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +15 -1
  442. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
  443. data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -12
  444. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
  445. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +6 -10
  446. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +16 -0
  447. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +4 -0
  448. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +4 -0
  449. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +278 -0
  450. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1474 -0
  451. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +720 -0
  452. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +16 -0
  453. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +5 -0
  454. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +4 -3
  455. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -1
  456. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +9 -4
  457. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +20 -0
  458. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
  459. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +16 -0
  460. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +6 -0
  461. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -0
  462. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +5 -0
  463. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -17
  464. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +31 -0
  465. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +26 -0
  466. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +172 -77
  467. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
  468. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +291 -0
  469. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +5 -3
  470. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -0
  471. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +0 -4
  472. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +3 -3
  473. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -4
  474. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +146 -57
  475. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +14 -3
  476. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +28 -20
  477. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +12 -4
  478. data/third_party/boringssl-with-bazel/src/ssl/internal.h +64 -47
  479. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +10 -10
  480. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
  481. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -21
  482. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +29 -0
  483. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -0
  484. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +6 -1
  485. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +13 -2
  486. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +64 -5
  487. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
  488. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +6 -2
  489. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +47 -53
  490. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -1
  491. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -27
  492. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +23 -75
  493. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +50 -20
  494. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +63 -25
  495. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +245 -175
  496. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +135 -75
  497. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1593 -1672
  498. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +512 -503
  499. metadata +115 -39
  500. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1754
  501. data/src/core/lib/gprpp/string_view.h +0 -60
  502. data/src/core/tsi/grpc_shadow_boringssl.h +0 -3311
  503. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256.c +0 -1063
@@ -21,6 +21,8 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include <string.h>
25
+
24
26
  #include "src/core/lib/security/credentials/credentials.h"
25
27
 
26
28
  #define GRPC_ARG_FAKE_SECURITY_EXPECTED_TARGETS \
@@ -75,6 +77,8 @@ class grpc_md_only_test_credentials : public grpc_call_credentials {
75
77
  void cancel_get_request_metadata(grpc_credentials_mdelem_array* md_array,
76
78
  grpc_error* error) override;
77
79
 
80
+ std::string debug_string() override { return "MD only Test Credentials"; };
81
+
78
82
  private:
79
83
  grpc_mdelem md_;
80
84
  bool is_async_;
@@ -68,13 +68,12 @@ static grpc_core::internal::grpc_gce_tenancy_checker g_gce_tenancy_checker =
68
68
 
69
69
  static void init_default_credentials(void) { gpr_mu_init(&g_state_mu); }
70
70
 
71
- typedef struct {
71
+ struct metadata_server_detector {
72
72
  grpc_polling_entity pollent;
73
73
  int is_done;
74
74
  int success;
75
75
  grpc_http_response response;
76
- } metadata_server_detector;
77
-
76
+ };
78
77
  grpc_core::RefCountedPtr<grpc_channel_security_connector>
79
78
  grpc_google_default_channel_credentials::create_security_connector(
80
79
  grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
@@ -224,17 +223,13 @@ static grpc_error* create_default_creds_from_path(
224
223
  grpc_slice creds_data = grpc_empty_slice();
225
224
  grpc_error* error = GRPC_ERROR_NONE;
226
225
  Json json;
227
- grpc_core::StringView str;
228
226
  if (creds_path == nullptr) {
229
227
  error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("creds_path unset");
230
228
  goto end;
231
229
  }
232
230
  error = grpc_load_file(creds_path, 0, &creds_data);
233
231
  if (error != GRPC_ERROR_NONE) goto end;
234
- str = grpc_core::StringView(
235
- reinterpret_cast<char*>(GRPC_SLICE_START_PTR(creds_data)),
236
- GRPC_SLICE_LENGTH(creds_data));
237
- json = Json::Parse(str, &error);
232
+ json = Json::Parse(grpc_core::StringViewFromSlice(creds_data), &error);
238
233
  if (error != GRPC_ERROR_NONE) goto end;
239
234
  if (json.type() != Json::Type::OBJECT) {
240
235
  error = grpc_error_set_str(
@@ -20,16 +20,15 @@
20
20
 
21
21
  #include "src/core/lib/security/credentials/iam/iam_credentials.h"
22
22
 
23
- #include <string.h>
24
-
25
- #include "src/core/lib/gprpp/ref_counted_ptr.h"
26
- #include "src/core/lib/surface/api_trace.h"
27
-
28
23
  #include <grpc/support/alloc.h>
29
24
  #include <grpc/support/log.h>
30
25
  #include <grpc/support/string_util.h>
31
26
  #include <grpc/support/sync.h>
32
27
 
28
+ #include "absl/strings/str_format.h"
29
+ #include "src/core/lib/gprpp/ref_counted_ptr.h"
30
+ #include "src/core/lib/surface/api_trace.h"
31
+
33
32
  grpc_google_iam_credentials::~grpc_google_iam_credentials() {
34
33
  grpc_credentials_mdelem_array_destroy(&md_array_);
35
34
  }
@@ -49,7 +48,10 @@ void grpc_google_iam_credentials::cancel_get_request_metadata(
49
48
 
50
49
  grpc_google_iam_credentials::grpc_google_iam_credentials(
51
50
  const char* token, const char* authority_selector)
52
- : grpc_call_credentials(GRPC_CALL_CREDENTIALS_TYPE_IAM) {
51
+ : grpc_call_credentials(GRPC_CALL_CREDENTIALS_TYPE_IAM),
52
+ debug_string_(absl::StrFormat(
53
+ "GoogleIAMCredentials{Token:%s,AuthoritySelector:%s}",
54
+ token != nullptr ? "present" : "absent", authority_selector)) {
53
55
  grpc_mdelem md = grpc_mdelem_from_slices(
54
56
  grpc_slice_from_static_string(GRPC_IAM_AUTHORIZATION_TOKEN_METADATA_KEY),
55
57
  grpc_slice_from_copied_string(token));
@@ -21,6 +21,8 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include <string>
25
+
24
26
  #include "src/core/lib/security/credentials/credentials.h"
25
27
 
26
28
  class grpc_google_iam_credentials : public grpc_call_credentials {
@@ -37,9 +39,11 @@ class grpc_google_iam_credentials : public grpc_call_credentials {
37
39
 
38
40
  void cancel_get_request_metadata(grpc_credentials_mdelem_array* md_array,
39
41
  grpc_error* error) override;
42
+ std::string debug_string() override { return debug_string_; }
40
43
 
41
44
  private:
42
45
  grpc_credentials_mdelem_array md_array_;
46
+ const std::string debug_string_;
43
47
  };
44
48
 
45
49
  #endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_IAM_IAM_CREDENTIALS_H */
@@ -127,7 +127,7 @@ grpc_auth_json_key grpc_auth_json_key_create_from_string(
127
127
  grpc_error* error = GRPC_ERROR_NONE;
128
128
  Json json = Json::Parse(json_string, &error);
129
129
  GRPC_LOG_IF_ERROR("JSON key parsing", error);
130
- return grpc_auth_json_key_create_from_json(std::move(json));
130
+ return grpc_auth_json_key_create_from_json(json);
131
131
  }
132
132
 
133
133
  void grpc_auth_json_key_destruct(grpc_auth_json_key* json_key) {
@@ -21,8 +21,6 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
- #include "src/core/tsi/grpc_shadow_boringssl.h"
25
-
26
24
  #include <grpc/slice.h>
27
25
  #include <openssl/rsa.h>
28
26
 
@@ -34,14 +32,13 @@
34
32
 
35
33
  /* --- auth_json_key parsing. --- */
36
34
 
37
- typedef struct {
35
+ struct grpc_auth_json_key {
38
36
  const char* type;
39
37
  char* private_key_id;
40
38
  char* client_id;
41
39
  char* client_email;
42
40
  RSA* private_key;
43
- } grpc_auth_json_key;
44
-
41
+ };
45
42
  /* Returns 1 if the object is valid, 0 otherwise. */
46
43
  int grpc_auth_json_key_is_valid(const grpc_auth_json_key* json_key);
47
44
 
@@ -21,6 +21,12 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include <string>
25
+
26
+ #include <grpc/support/time.h>
27
+
28
+ #include "absl/strings/str_format.h"
29
+ #include "absl/time/time.h"
24
30
  #include "src/core/lib/security/credentials/credentials.h"
25
31
  #include "src/core/lib/security/credentials/jwt/json_token.h"
26
32
 
@@ -43,6 +49,12 @@ class grpc_service_account_jwt_access_credentials
43
49
  const gpr_timespec& jwt_lifetime() const { return jwt_lifetime_; }
44
50
  const grpc_auth_json_key& key() const { return key_; }
45
51
 
52
+ std::string debug_string() override {
53
+ return absl::StrFormat("JWTAccessCredentials{ExpirationTime:%s}",
54
+ absl::FormatTime(absl::FromUnixMicros(
55
+ gpr_timespec_to_micros(jwt_lifetime_))));
56
+ };
57
+
46
58
  private:
47
59
  void reset_cache();
48
60
 
@@ -18,8 +18,6 @@
18
18
 
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
- #include "src/core/tsi/grpc_shadow_boringssl.h"
22
-
23
21
  #include "src/core/lib/security/credentials/jwt/jwt_verifier.h"
24
22
 
25
23
  #include <limits.h>
@@ -88,9 +86,7 @@ static Json parse_json_part_from_jwt(const char* str, size_t len) {
88
86
  gpr_log(GPR_ERROR, "Invalid base64.");
89
87
  return Json(); // JSON null
90
88
  }
91
- grpc_core::StringView string(
92
- reinterpret_cast<char*>(GRPC_SLICE_START_PTR(slice)),
93
- GRPC_SLICE_LENGTH(slice));
89
+ absl::string_view string = grpc_core::StringViewFromSlice(slice);
94
90
  grpc_error* error = GRPC_ERROR_NONE;
95
91
  Json json = Json::Parse(string, &error);
96
92
  if (error != GRPC_ERROR_NONE) {
@@ -122,14 +118,13 @@ static gpr_timespec validate_time_field(const Json& json, const char* key) {
122
118
 
123
119
  /* --- JOSE header. see http://tools.ietf.org/html/rfc7515#section-4 --- */
124
120
 
125
- typedef struct {
121
+ struct jose_header {
126
122
  const char* alg;
127
123
  const char* kid;
128
124
  const char* typ;
129
125
  /* TODO(jboeuf): Add others as needed (jku, jwk, x5u, x5c and so on...). */
130
126
  grpc_core::ManualConstructor<Json> json;
131
- } jose_header;
132
-
127
+ };
133
128
  static void jose_header_destroy(jose_header* h) {
134
129
  h->json.Destroy();
135
130
  gpr_free(h);
@@ -339,7 +334,7 @@ typedef enum {
339
334
  HTTP_RESPONSE_COUNT /* must be last */
340
335
  } http_response_index;
341
336
 
342
- typedef struct {
337
+ struct verifier_cb_ctx {
343
338
  grpc_jwt_verifier* verifier;
344
339
  grpc_polling_entity pollent;
345
340
  jose_header* header;
@@ -350,8 +345,7 @@ typedef struct {
350
345
  void* user_data;
351
346
  grpc_jwt_verification_done_cb user_cb;
352
347
  grpc_http_response responses[HTTP_RESPONSE_COUNT];
353
- } verifier_cb_ctx;
354
-
348
+ };
355
349
  /* Takes ownership of the header, claims and signature. */
356
350
  static verifier_cb_ctx* verifier_cb_ctx_create(
357
351
  grpc_jwt_verifier* verifier, grpc_pollset* pollset, jose_header* header,
@@ -396,11 +390,10 @@ gpr_timespec grpc_jwt_verifier_clock_skew = {60, 0, GPR_TIMESPAN};
396
390
  /* Max delay defaults to one minute. */
397
391
  grpc_millis grpc_jwt_verifier_max_delay = 60 * GPR_MS_PER_SEC;
398
392
 
399
- typedef struct {
393
+ struct email_key_mapping {
400
394
  char* email_domain;
401
395
  char* key_url_prefix;
402
- } email_key_mapping;
403
-
396
+ };
404
397
  struct grpc_jwt_verifier {
405
398
  email_key_mapping* mappings;
406
399
  size_t num_mappings; /* Should be very few, linear search ok. */
@@ -420,7 +413,7 @@ static Json json_from_http(const grpc_httpcli_response* response) {
420
413
  }
421
414
  grpc_error* error = GRPC_ERROR_NONE;
422
415
  Json json = Json::Parse(
423
- grpc_core::StringView(response->body, response->body_length), &error);
416
+ absl::string_view(response->body, response->body_length), &error);
424
417
  if (error != GRPC_ERROR_NONE) {
425
418
  gpr_log(GPR_ERROR, "Invalid JSON found in response.");
426
419
  return Json(); // JSON null
@@ -71,7 +71,7 @@ gpr_timespec grpc_jwt_claims_not_before(const grpc_jwt_claims* claims);
71
71
 
72
72
  typedef struct grpc_jwt_verifier grpc_jwt_verifier;
73
73
 
74
- typedef struct {
74
+ struct grpc_jwt_verifier_email_domain_key_url_mapping {
75
75
  /* The email domain is the part after the @ sign. */
76
76
  const char* email_domain;
77
77
 
@@ -79,8 +79,7 @@ typedef struct {
79
79
  https://<key_url_prefix>/<issuer_email>
80
80
  Therefore the key_url_prefix must NOT contain https://. */
81
81
  const char* key_url_prefix;
82
- } grpc_jwt_verifier_email_domain_key_url_mapping;
83
-
82
+ };
84
83
  /* Globals to control the verifier. Not thread-safe. */
85
84
  extern gpr_timespec grpc_jwt_verifier_clock_skew;
86
85
  extern grpc_millis grpc_jwt_verifier_max_delay;
@@ -23,6 +23,9 @@
23
23
 
24
24
  #include <string.h>
25
25
 
26
+ #include "absl/container/inlined_vector.h"
27
+ #include "absl/strings/str_join.h"
28
+
26
29
  #include <grpc/grpc_security.h>
27
30
  #include <grpc/impl/codegen/slice.h>
28
31
  #include <grpc/slice.h>
@@ -30,8 +33,8 @@
30
33
  #include <grpc/support/log.h>
31
34
  #include <grpc/support/string_util.h>
32
35
 
36
+ #include "absl/strings/str_format.h"
33
37
  #include "src/core/lib/gpr/string.h"
34
- #include "src/core/lib/gprpp/inlined_vector.h"
35
38
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
36
39
  #include "src/core/lib/iomgr/error.h"
37
40
  #include "src/core/lib/iomgr/load_file.h"
@@ -96,7 +99,7 @@ grpc_auth_refresh_token grpc_auth_refresh_token_create_from_string(
96
99
  gpr_log(GPR_ERROR, "JSON parsing failed: %s", grpc_error_string(error));
97
100
  GRPC_ERROR_UNREF(error);
98
101
  }
99
- return grpc_auth_refresh_token_create_from_json(std::move(json));
102
+ return grpc_auth_refresh_token_create_from_json(json);
100
103
  }
101
104
 
102
105
  void grpc_auth_refresh_token_destruct(grpc_auth_refresh_token* refresh_token) {
@@ -358,6 +361,10 @@ grpc_oauth2_token_fetcher_credentials::grpc_oauth2_token_fetcher_credentials()
358
361
  grpc_httpcli_context_init(&httpcli_context_);
359
362
  }
360
363
 
364
+ std::string grpc_oauth2_token_fetcher_credentials::debug_string() {
365
+ return "OAuth2TokenFetcherCredentials";
366
+ }
367
+
361
368
  //
362
369
  // Google Compute Engine credentials.
363
370
  //
@@ -396,6 +403,12 @@ class grpc_compute_engine_token_fetcher_credentials
396
403
  grpc_resource_quota_unref_internal(resource_quota);
397
404
  }
398
405
 
406
+ std::string debug_string() override {
407
+ return absl::StrFormat(
408
+ "GoogleComputeEngineTokenFetcherCredentials{%s}",
409
+ grpc_oauth2_token_fetcher_credentials::debug_string());
410
+ }
411
+
399
412
  private:
400
413
  grpc_closure http_get_cb_closure_;
401
414
  };
@@ -468,6 +481,12 @@ grpc_refresh_token_credentials_create_from_auth_refresh_token(
468
481
  refresh_token);
469
482
  }
470
483
 
484
+ std::string grpc_google_refresh_token_credentials::debug_string() {
485
+ return absl::StrFormat("GoogleRefreshToken{ClientID:%s,%s}",
486
+ refresh_token_.client_id,
487
+ grpc_oauth2_token_fetcher_credentials::debug_string());
488
+ }
489
+
471
490
  static char* create_loggable_refresh_token(grpc_auth_refresh_token* token) {
472
491
  if (strcmp(token->type, GRPC_AUTH_JSON_TYPE_INVALID) == 0) {
473
492
  return gpr_strdup("<Invalid json token>");
@@ -505,12 +524,10 @@ namespace grpc_core {
505
524
 
506
525
  namespace {
507
526
 
508
- void MaybeAddToBody(gpr_strvec* body_strvec, const char* field_name,
509
- const char* field) {
527
+ void MaybeAddToBody(const char* field_name, const char* field,
528
+ std::vector<std::string>* body) {
510
529
  if (field == nullptr || strlen(field) == 0) return;
511
- char* new_query;
512
- gpr_asprintf(&new_query, "&%s=%s", field_name, field);
513
- gpr_strvec_add(body_strvec, new_query);
530
+ body->push_back(absl::StrFormat("&%s=%s", field_name, field));
514
531
  }
515
532
 
516
533
  grpc_error* LoadTokenFile(const char* path, gpr_slice* token) {
@@ -540,6 +557,13 @@ class StsTokenFetcherCredentials
540
557
 
541
558
  ~StsTokenFetcherCredentials() override { grpc_uri_destroy(sts_url_); }
542
559
 
560
+ std::string debug_string() override {
561
+ return absl::StrFormat(
562
+ "StsTokenFetcherCredentials{Path:%s,Authority:%s,%s}", sts_url_->path,
563
+ sts_url_->authority,
564
+ grpc_oauth2_token_fetcher_credentials::debug_string());
565
+ }
566
+
543
567
  private:
544
568
  void fetch_oauth2(grpc_credentials_metadata_request* metadata_req,
545
569
  grpc_httpcli_context* http_context,
@@ -583,20 +607,18 @@ class StsTokenFetcherCredentials
583
607
 
584
608
  grpc_error* FillBody(char** body, size_t* body_length) {
585
609
  *body = nullptr;
586
- gpr_strvec body_strvec;
587
- gpr_strvec_init(&body_strvec);
610
+ std::vector<std::string> body_parts;
588
611
  grpc_slice subject_token = grpc_empty_slice();
589
612
  grpc_slice actor_token = grpc_empty_slice();
590
613
  grpc_error* err = GRPC_ERROR_NONE;
591
614
 
592
- auto cleanup = [&body, &body_length, &body_strvec, &subject_token,
615
+ auto cleanup = [&body, &body_length, &body_parts, &subject_token,
593
616
  &actor_token, &err]() {
594
617
  if (err == GRPC_ERROR_NONE) {
595
- *body = gpr_strvec_flatten(&body_strvec, body_length);
596
- } else {
597
- gpr_free(*body);
618
+ std::string body_str = absl::StrJoin(body_parts, "");
619
+ *body = gpr_strdup(body_str.c_str());
620
+ *body_length = body_str.size();
598
621
  }
599
- gpr_strvec_destroy(&body_strvec);
600
622
  grpc_slice_unref_internal(subject_token);
601
623
  grpc_slice_unref_internal(actor_token);
602
624
  return err;
@@ -604,23 +626,23 @@ class StsTokenFetcherCredentials
604
626
 
605
627
  err = LoadTokenFile(subject_token_path_.get(), &subject_token);
606
628
  if (err != GRPC_ERROR_NONE) return cleanup();
607
- gpr_asprintf(
608
- body, GRPC_STS_POST_MINIMAL_BODY_FORMAT_STRING,
629
+ body_parts.push_back(absl::StrFormat(
630
+ GRPC_STS_POST_MINIMAL_BODY_FORMAT_STRING,
609
631
  reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(subject_token)),
610
- subject_token_type_.get());
611
- gpr_strvec_add(&body_strvec, *body);
612
- MaybeAddToBody(&body_strvec, "resource", resource_.get());
613
- MaybeAddToBody(&body_strvec, "audience", audience_.get());
614
- MaybeAddToBody(&body_strvec, "scope", scope_.get());
615
- MaybeAddToBody(&body_strvec, "requested_token_type",
616
- requested_token_type_.get());
632
+ subject_token_type_.get()));
633
+ MaybeAddToBody("resource", resource_.get(), &body_parts);
634
+ MaybeAddToBody("audience", audience_.get(), &body_parts);
635
+ MaybeAddToBody("scope", scope_.get(), &body_parts);
636
+ MaybeAddToBody("requested_token_type", requested_token_type_.get(),
637
+ &body_parts);
617
638
  if ((actor_token_path_ != nullptr) && *actor_token_path_ != '\0') {
618
639
  err = LoadTokenFile(actor_token_path_.get(), &actor_token);
619
640
  if (err != GRPC_ERROR_NONE) return cleanup();
620
641
  MaybeAddToBody(
621
- &body_strvec, "actor_token",
622
- reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(actor_token)));
623
- MaybeAddToBody(&body_strvec, "actor_token_type", actor_token_type_.get());
642
+ "actor_token",
643
+ reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(actor_token)),
644
+ &body_parts);
645
+ MaybeAddToBody("actor_token_type", actor_token_type_.get(), &body_parts);
624
646
  }
625
647
  return cleanup();
626
648
  }
@@ -645,7 +667,7 @@ grpc_error* ValidateStsCredentialsOptions(
645
667
  void operator()(grpc_uri* uri) { grpc_uri_destroy(uri); }
646
668
  };
647
669
  *sts_url_out = nullptr;
648
- InlinedVector<grpc_error*, 3> error_list;
670
+ absl::InlinedVector<grpc_error*, 3> error_list;
649
671
  std::unique_ptr<grpc_uri, GrpcUriDeleter> sts_url(
650
672
  options->token_exchange_service_uri != nullptr
651
673
  ? grpc_uri_parse(options->token_exchange_service_uri, false)
@@ -731,6 +753,12 @@ grpc_access_token_credentials::grpc_access_token_credentials(
731
753
  gpr_free(token_md_value);
732
754
  }
733
755
 
756
+ std::string grpc_access_token_credentials::debug_string() {
757
+ bool access_token_present = !GRPC_MDISNULL(access_token_md_);
758
+ return absl::StrFormat("AccessTokenCredentials{Token:%s}",
759
+ access_token_present ? "present" : "absent");
760
+ }
761
+
734
762
  grpc_call_credentials* grpc_access_token_credentials_create(
735
763
  const char* access_token, void* reserved) {
736
764
  GRPC_API_TRACE(
@@ -21,6 +21,8 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include <string>
25
+
24
26
  #include <grpc/grpc_security.h>
25
27
  #include "src/core/lib/json/json.h"
26
28
  #include "src/core/lib/security/credentials/credentials.h"
@@ -32,13 +34,12 @@
32
34
  "s&subject_token_type=%s"
33
35
 
34
36
  // auth_refresh_token parsing.
35
- typedef struct {
37
+ struct grpc_auth_refresh_token {
36
38
  const char* type;
37
39
  char* client_id;
38
40
  char* client_secret;
39
41
  char* refresh_token;
40
- } grpc_auth_refresh_token;
41
-
42
+ };
42
43
  /// Returns 1 if the object is valid, 0 otherwise.
43
44
  int grpc_auth_refresh_token_is_valid(
44
45
  const grpc_auth_refresh_token* refresh_token);
@@ -84,6 +85,7 @@ class grpc_oauth2_token_fetcher_credentials : public grpc_call_credentials {
84
85
 
85
86
  void on_http_response(grpc_credentials_metadata_request* r,
86
87
  grpc_error* error);
88
+ std::string debug_string() override;
87
89
 
88
90
  protected:
89
91
  virtual void fetch_oauth2(grpc_credentials_metadata_request* req,
@@ -112,6 +114,8 @@ class grpc_google_refresh_token_credentials final
112
114
  return refresh_token_;
113
115
  }
114
116
 
117
+ std::string debug_string() override;
118
+
115
119
  protected:
116
120
  void fetch_oauth2(grpc_credentials_metadata_request* req,
117
121
  grpc_httpcli_context* httpcli_context,
@@ -138,6 +142,8 @@ class grpc_access_token_credentials final : public grpc_call_credentials {
138
142
  void cancel_get_request_metadata(grpc_credentials_mdelem_array* md_array,
139
143
  grpc_error* error) override;
140
144
 
145
+ std::string debug_string() override;
146
+
141
147
  private:
142
148
  grpc_mdelem access_token_md_;
143
149
  };