grpc 1.24.0 → 1.25.0.pre1

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 (504) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +306 -243
  3. data/etc/roots.pem +0 -100
  4. data/include/grpc/grpc_security.h +44 -18
  5. data/include/grpc/impl/codegen/grpc_types.h +15 -0
  6. data/include/grpc/impl/codegen/port_platform.h +27 -11
  7. data/include/grpc/impl/codegen/sync_generic.h +1 -1
  8. data/src/boringssl/err_data.c +695 -650
  9. data/src/core/ext/filters/client_channel/client_channel.cc +257 -179
  10. data/src/core/ext/filters/client_channel/client_channel.h +24 -0
  11. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +2 -3
  12. data/src/core/ext/filters/client_channel/client_channel_factory.h +1 -5
  13. data/src/core/ext/filters/client_channel/health/health_check_client.cc +18 -45
  14. data/src/core/ext/filters/client_channel/health/health_check_client.h +5 -13
  15. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  16. data/src/core/ext/filters/client_channel/lb_policy.cc +2 -3
  17. data/src/core/ext/filters/client_channel/lb_policy.h +65 -55
  18. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -14
  19. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +113 -36
  20. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +14 -19
  21. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +36 -13
  22. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +3 -10
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +814 -1589
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +2 -5
  25. data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -6
  26. data/src/core/ext/filters/client_channel/resolver.cc +1 -2
  27. data/src/core/ext/filters/client_channel/resolver.h +8 -16
  28. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +25 -8
  29. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +46 -12
  30. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +10 -17
  31. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +7 -8
  32. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
  33. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +111 -44
  34. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +22 -14
  35. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  36. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +2 -2
  37. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +29 -10
  38. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +27 -36
  39. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +7 -10
  40. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +60 -16
  41. data/src/core/ext/filters/client_channel/resolver_factory.h +4 -8
  42. data/src/core/ext/filters/client_channel/resolver_registry.cc +1 -1
  43. data/src/core/ext/filters/client_channel/resolver_registry.h +1 -1
  44. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -10
  45. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +7 -8
  46. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +1 -1
  47. data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -5
  48. data/src/core/ext/filters/client_channel/retry_throttle.h +1 -4
  49. data/src/core/ext/filters/client_channel/service_config.h +8 -8
  50. data/src/core/ext/filters/client_channel/subchannel.cc +53 -86
  51. data/src/core/ext/filters/client_channel/subchannel.h +7 -9
  52. data/src/core/ext/filters/client_channel/subchannel_interface.h +9 -13
  53. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +3 -6
  54. data/src/core/ext/filters/client_channel/{lb_policy/xds/xds_load_balancer_api.cc → xds/xds_api.cc} +169 -52
  55. data/src/core/ext/filters/client_channel/xds/xds_api.h +171 -0
  56. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +450 -0
  57. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +99 -0
  58. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel.h +8 -6
  59. data/src/core/ext/filters/client_channel/xds/xds_channel_args.h +26 -0
  60. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel_secure.cc +28 -11
  61. data/src/core/ext/filters/client_channel/xds/xds_client.cc +1413 -0
  62. data/src/core/ext/filters/client_channel/xds/xds_client.h +221 -0
  63. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.cc +1 -5
  64. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.h +3 -4
  65. data/src/core/ext/filters/deadline/deadline_filter.cc +20 -20
  66. data/src/core/ext/filters/http/client/http_client_filter.cc +15 -15
  67. data/src/core/ext/filters/http/client_authority_filter.cc +14 -14
  68. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +12 -12
  69. data/src/core/ext/filters/max_age/max_age_filter.cc +59 -50
  70. data/src/core/ext/filters/message_size/message_size_filter.cc +18 -18
  71. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -14
  72. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +233 -175
  73. data/src/core/ext/transport/chttp2/transport/flow_control.h +21 -24
  74. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +253 -163
  75. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +24 -12
  76. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -3
  77. data/src/core/ext/transport/chttp2/transport/internal.h +13 -15
  78. data/src/core/ext/transport/chttp2/transport/writing.cc +3 -0
  79. data/src/core/ext/transport/inproc/inproc_transport.cc +20 -13
  80. data/src/core/lib/channel/channel_args.cc +16 -0
  81. data/src/core/lib/channel/channel_args.h +22 -0
  82. data/src/core/lib/channel/channelz.cc +5 -6
  83. data/src/core/lib/channel/channelz.h +1 -1
  84. data/src/core/lib/channel/connected_channel.cc +20 -20
  85. data/src/core/lib/channel/handshaker.h +3 -4
  86. data/src/core/lib/channel/handshaker_factory.h +1 -3
  87. data/src/core/lib/debug/trace.h +3 -2
  88. data/src/core/lib/gprpp/arena.cc +3 -3
  89. data/src/core/lib/gprpp/arena.h +2 -3
  90. data/src/core/lib/gprpp/inlined_vector.h +9 -0
  91. data/src/core/lib/gprpp/map.h +3 -501
  92. data/src/core/lib/gprpp/memory.h +45 -41
  93. data/src/core/lib/gprpp/mpscq.cc +108 -0
  94. data/src/core/lib/gprpp/mpscq.h +98 -0
  95. data/src/core/lib/gprpp/orphanable.h +6 -11
  96. data/src/core/lib/gprpp/ref_counted.h +25 -19
  97. data/src/core/lib/gprpp/set.h +33 -0
  98. data/src/core/lib/gprpp/thd.h +2 -4
  99. data/src/core/lib/http/httpcli.cc +1 -1
  100. data/src/core/lib/http/httpcli_security_connector.cc +15 -11
  101. data/src/core/lib/http/parser.cc +1 -1
  102. data/src/core/lib/iomgr/buffer_list.cc +4 -5
  103. data/src/core/lib/iomgr/buffer_list.h +5 -6
  104. data/src/core/lib/iomgr/call_combiner.cc +4 -5
  105. data/src/core/lib/iomgr/call_combiner.h +2 -2
  106. data/src/core/lib/iomgr/cfstream_handle.h +3 -5
  107. data/src/core/lib/iomgr/closure.h +8 -3
  108. data/src/core/lib/iomgr/combiner.cc +45 -82
  109. data/src/core/lib/iomgr/combiner.h +32 -8
  110. data/src/core/lib/iomgr/endpoint_cfstream.cc +5 -3
  111. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -15
  112. data/src/core/lib/iomgr/exec_ctx.h +4 -3
  113. data/src/core/lib/iomgr/executor.cc +4 -2
  114. data/src/core/lib/iomgr/executor.h +3 -0
  115. data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -6
  116. data/src/core/lib/iomgr/executor/threadpool.cc +1 -2
  117. data/src/core/lib/iomgr/executor/threadpool.h +7 -11
  118. data/src/core/lib/iomgr/resource_quota.cc +55 -51
  119. data/src/core/lib/iomgr/resource_quota.h +13 -9
  120. data/src/core/lib/iomgr/socket_utils_common_posix.cc +13 -0
  121. data/src/core/lib/iomgr/socket_utils_posix.h +4 -0
  122. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -11
  123. data/src/core/lib/iomgr/tcp_custom.cc +9 -7
  124. data/src/core/lib/iomgr/tcp_posix.cc +20 -16
  125. data/src/core/lib/iomgr/tcp_server.h +1 -4
  126. data/src/core/lib/iomgr/tcp_server_custom.cc +5 -5
  127. data/src/core/lib/iomgr/tcp_server_posix.cc +1 -1
  128. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -11
  129. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  130. data/src/core/lib/iomgr/udp_server.cc +3 -2
  131. data/src/core/lib/iomgr/udp_server.h +6 -12
  132. data/src/core/lib/json/json.h +1 -1
  133. data/src/core/lib/json/json_string.cc +2 -2
  134. data/src/core/lib/profiling/basic_timers.cc +2 -2
  135. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -2
  136. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -1
  137. data/src/core/lib/security/credentials/credentials.h +4 -20
  138. data/src/core/lib/security/credentials/fake/fake_credentials.cc +4 -4
  139. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -3
  140. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +64 -0
  141. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +4 -4
  142. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -7
  143. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +2 -0
  144. data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -4
  145. data/src/core/lib/security/security_connector/security_connector.cc +1 -0
  146. data/src/core/lib/security/security_connector/security_connector.h +19 -17
  147. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +8 -5
  148. data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
  149. data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
  150. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +14 -6
  151. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +4 -2
  152. data/src/core/lib/security/transport/client_auth_filter.cc +17 -17
  153. data/src/core/lib/security/transport/security_handshaker.cc +29 -13
  154. data/src/core/lib/security/transport/security_handshaker.h +4 -2
  155. data/src/core/lib/security/transport/server_auth_filter.cc +14 -14
  156. data/src/core/lib/slice/slice.cc +2 -10
  157. data/src/core/lib/slice/slice_hash_table.h +4 -6
  158. data/src/core/lib/slice/slice_intern.cc +42 -39
  159. data/src/core/lib/slice/slice_internal.h +3 -3
  160. data/src/core/lib/slice/slice_utils.h +21 -4
  161. data/src/core/lib/slice/slice_weak_hash_table.h +4 -6
  162. data/src/core/lib/surface/call.cc +3 -3
  163. data/src/core/lib/surface/channel.cc +7 -0
  164. data/src/core/lib/surface/completion_queue.cc +12 -11
  165. data/src/core/lib/surface/completion_queue.h +4 -2
  166. data/src/core/lib/surface/init.cc +1 -0
  167. data/src/core/lib/surface/lame_client.cc +33 -18
  168. data/src/core/lib/surface/server.cc +77 -76
  169. data/src/core/lib/surface/version.cc +1 -1
  170. data/src/core/lib/transport/byte_stream.h +3 -7
  171. data/src/core/lib/transport/connectivity_state.cc +112 -98
  172. data/src/core/lib/transport/connectivity_state.h +100 -50
  173. data/src/core/lib/transport/static_metadata.cc +276 -288
  174. data/src/core/lib/transport/static_metadata.h +73 -76
  175. data/src/core/lib/transport/status_conversion.cc +1 -1
  176. data/src/core/lib/transport/status_metadata.cc +1 -1
  177. data/src/core/lib/transport/transport.cc +2 -2
  178. data/src/core/lib/transport/transport.h +12 -4
  179. data/src/core/lib/transport/transport_op_string.cc +14 -11
  180. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
  181. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +1 -1
  182. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +5 -5
  183. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -2
  184. data/src/core/tsi/fake_transport_security.cc +7 -5
  185. data/src/core/tsi/grpc_shadow_boringssl.h +2918 -2627
  186. data/src/core/tsi/local_transport_security.cc +8 -6
  187. data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -3
  188. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -2
  189. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +7 -5
  190. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -6
  191. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -2
  192. data/src/core/tsi/ssl_transport_security.cc +12 -12
  193. data/src/core/tsi/ssl_transport_security.h +2 -2
  194. data/src/core/tsi/transport_security_grpc.cc +7 -0
  195. data/src/core/tsi/transport_security_grpc.h +6 -0
  196. data/src/ruby/ext/grpc/extconf.rb +1 -0
  197. data/src/ruby/ext/grpc/rb_call.c +1 -1
  198. data/src/ruby/ext/grpc/rb_channel.c +1 -1
  199. data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
  200. data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
  201. data/src/ruby/lib/grpc/version.rb +1 -1
  202. data/src/ruby/spec/google_rpc_status_utils_spec.rb +2 -2
  203. data/third_party/boringssl/crypto/asn1/a_bool.c +18 -5
  204. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +17 -221
  205. data/third_party/boringssl/crypto/asn1/a_dup.c +0 -24
  206. data/third_party/boringssl/crypto/asn1/a_enum.c +2 -2
  207. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +10 -72
  208. data/third_party/boringssl/crypto/asn1/a_int.c +12 -71
  209. data/third_party/boringssl/crypto/asn1/a_mbstr.c +110 -216
  210. data/third_party/boringssl/crypto/asn1/a_object.c +16 -5
  211. data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
  212. data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -1
  213. data/third_party/boringssl/crypto/asn1/tasn_enc.c +3 -1
  214. data/third_party/boringssl/crypto/base64/base64.c +2 -2
  215. data/third_party/boringssl/crypto/bio/bio.c +73 -9
  216. data/third_party/boringssl/crypto/bio/connect.c +4 -0
  217. data/third_party/boringssl/crypto/bio/fd.c +4 -0
  218. data/third_party/boringssl/crypto/bio/file.c +5 -2
  219. data/third_party/boringssl/crypto/bio/socket.c +4 -0
  220. data/third_party/boringssl/crypto/bio/socket_helper.c +4 -0
  221. data/third_party/boringssl/crypto/bn_extra/convert.c +11 -7
  222. data/third_party/boringssl/crypto/bytestring/ber.c +8 -4
  223. data/third_party/boringssl/crypto/bytestring/cbb.c +19 -7
  224. data/third_party/boringssl/crypto/bytestring/cbs.c +28 -15
  225. data/third_party/boringssl/crypto/bytestring/internal.h +28 -7
  226. data/third_party/boringssl/crypto/bytestring/unicode.c +155 -0
  227. data/third_party/boringssl/crypto/chacha/chacha.c +36 -19
  228. data/third_party/boringssl/crypto/chacha/internal.h +45 -0
  229. data/third_party/boringssl/crypto/cipher_extra/cipher_extra.c +29 -0
  230. data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +269 -25
  231. data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +16 -14
  232. data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +54 -38
  233. data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +133 -41
  234. data/third_party/boringssl/crypto/cipher_extra/e_tls.c +23 -15
  235. data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +24 -15
  236. data/third_party/boringssl/crypto/cmac/cmac.c +62 -25
  237. data/third_party/boringssl/crypto/conf/conf.c +7 -0
  238. data/third_party/boringssl/crypto/cpu-arm-linux.c +4 -148
  239. data/third_party/boringssl/crypto/cpu-arm-linux.h +201 -0
  240. data/third_party/boringssl/crypto/cpu-intel.c +45 -51
  241. data/third_party/boringssl/crypto/crypto.c +39 -22
  242. data/third_party/boringssl/crypto/curve25519/spake25519.c +1 -1
  243. data/third_party/boringssl/crypto/dsa/dsa.c +77 -53
  244. data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +20 -8
  245. data/third_party/boringssl/crypto/ec_extra/ec_derive.c +96 -0
  246. data/third_party/boringssl/crypto/{ecdh/ecdh.c → ecdh_extra/ecdh_extra.c} +20 -58
  247. data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +1 -9
  248. data/third_party/boringssl/crypto/engine/engine.c +2 -1
  249. data/third_party/boringssl/crypto/err/err.c +2 -0
  250. data/third_party/boringssl/crypto/err/internal.h +2 -2
  251. data/third_party/boringssl/crypto/evp/evp.c +89 -8
  252. data/third_party/boringssl/crypto/evp/evp_asn1.c +56 -5
  253. data/third_party/boringssl/crypto/evp/evp_ctx.c +52 -14
  254. data/third_party/boringssl/crypto/evp/internal.h +18 -1
  255. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +5 -0
  256. data/third_party/boringssl/crypto/evp/p_ec.c +51 -3
  257. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +6 -7
  258. data/third_party/boringssl/crypto/evp/p_ed25519.c +36 -3
  259. data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +76 -45
  260. data/third_party/boringssl/crypto/evp/p_rsa.c +3 -1
  261. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +5 -0
  262. data/third_party/boringssl/crypto/evp/p_x25519.c +110 -0
  263. data/third_party/boringssl/crypto/evp/p_x25519_asn1.c +249 -0
  264. data/third_party/boringssl/crypto/evp/scrypt.c +6 -2
  265. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +34 -274
  266. data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +161 -21
  267. data/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.c +111 -13
  268. data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +17 -21
  269. data/third_party/boringssl/crypto/fipsmodule/bcm.c +119 -7
  270. data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +19 -2
  271. data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +2 -2
  272. data/third_party/boringssl/crypto/fipsmodule/bn/ctx.c +93 -160
  273. data/third_party/boringssl/crypto/fipsmodule/bn/div.c +48 -57
  274. data/third_party/boringssl/crypto/fipsmodule/bn/div_extra.c +87 -0
  275. data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +143 -211
  276. data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +0 -305
  277. data/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.c +325 -0
  278. data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +168 -50
  279. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +68 -92
  280. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +7 -6
  281. data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +11 -14
  282. data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +358 -443
  283. data/third_party/boringssl/crypto/fipsmodule/bn/random.c +25 -35
  284. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +20 -25
  285. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +76 -5
  286. data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +14 -14
  287. data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +7 -2
  288. data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +383 -516
  289. data/third_party/boringssl/crypto/fipsmodule/cipher/e_des.c +4 -0
  290. data/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +3 -4
  291. data/third_party/boringssl/crypto/fipsmodule/delocate.h +3 -2
  292. data/third_party/boringssl/crypto/fipsmodule/digest/digest.c +32 -17
  293. data/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +3 -3
  294. data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +228 -122
  295. data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +34 -8
  296. data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +311 -98
  297. data/third_party/boringssl/crypto/fipsmodule/ec/felem.c +82 -0
  298. data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +263 -97
  299. data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +22 -59
  300. data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +317 -234
  301. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +9473 -9475
  302. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +313 -109
  303. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +36 -0
  304. data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +96 -0
  305. data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +126 -792
  306. data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +84 -0
  307. data/third_party/boringssl/crypto/fipsmodule/ec/util.c +163 -12
  308. data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +84 -211
  309. data/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.c +122 -0
  310. data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +60 -205
  311. data/third_party/boringssl/crypto/fipsmodule/fips_shared_support.c +32 -0
  312. data/third_party/boringssl/crypto/fipsmodule/is_fips.c +2 -0
  313. data/third_party/boringssl/crypto/fipsmodule/md4/md4.c +3 -1
  314. data/third_party/boringssl/crypto/fipsmodule/md5/internal.h +37 -0
  315. data/third_party/boringssl/crypto/fipsmodule/md5/md5.c +11 -8
  316. data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +35 -79
  317. data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +7 -39
  318. data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +7 -27
  319. data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +123 -309
  320. data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +189 -126
  321. data/third_party/boringssl/crypto/fipsmodule/modes/ofb.c +3 -2
  322. data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +2 -2
  323. data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +35 -0
  324. data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +24 -19
  325. data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +256 -77
  326. data/third_party/boringssl/crypto/fipsmodule/rsa/padding.c +10 -7
  327. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +5 -1
  328. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +131 -14
  329. data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +83 -10
  330. data/third_party/boringssl/crypto/fipsmodule/sha/internal.h +53 -0
  331. data/third_party/boringssl/crypto/fipsmodule/sha/sha1.c +9 -13
  332. data/third_party/boringssl/crypto/fipsmodule/sha/sha256.c +18 -12
  333. data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +95 -168
  334. data/third_party/boringssl/crypto/hrss/hrss.c +2201 -0
  335. data/third_party/boringssl/crypto/hrss/internal.h +62 -0
  336. data/third_party/boringssl/crypto/internal.h +95 -20
  337. data/third_party/boringssl/crypto/lhash/lhash.c +45 -33
  338. data/third_party/boringssl/crypto/mem.c +39 -2
  339. data/third_party/boringssl/crypto/obj/obj.c +4 -4
  340. data/third_party/boringssl/crypto/obj/obj_dat.h +6181 -875
  341. data/third_party/boringssl/crypto/pem/pem_all.c +2 -3
  342. data/third_party/boringssl/crypto/pem/pem_info.c +144 -162
  343. data/third_party/boringssl/crypto/pem/pem_lib.c +53 -52
  344. data/third_party/boringssl/crypto/pem/pem_pkey.c +13 -21
  345. data/third_party/boringssl/crypto/pkcs7/pkcs7.c +15 -22
  346. data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +168 -16
  347. data/third_party/boringssl/crypto/pkcs8/internal.h +11 -0
  348. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +24 -15
  349. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +42 -25
  350. data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +559 -43
  351. data/third_party/boringssl/crypto/pool/internal.h +1 -1
  352. data/third_party/boringssl/crypto/pool/pool.c +21 -0
  353. data/third_party/boringssl/crypto/rand_extra/deterministic.c +8 -0
  354. data/third_party/boringssl/crypto/rand_extra/fuchsia.c +1 -14
  355. data/third_party/boringssl/crypto/refcount_lock.c +2 -2
  356. data/third_party/boringssl/crypto/rsa_extra/rsa_print.c +22 -0
  357. data/third_party/boringssl/crypto/siphash/siphash.c +80 -0
  358. data/third_party/boringssl/crypto/stack/stack.c +83 -32
  359. data/third_party/boringssl/crypto/thread_none.c +2 -2
  360. data/third_party/boringssl/crypto/thread_pthread.c +2 -2
  361. data/third_party/boringssl/crypto/thread_win.c +38 -19
  362. data/third_party/boringssl/crypto/x509/a_strex.c +22 -2
  363. data/third_party/boringssl/crypto/x509/asn1_gen.c +2 -1
  364. data/third_party/boringssl/crypto/x509/by_dir.c +7 -0
  365. data/third_party/boringssl/crypto/x509/by_file.c +12 -10
  366. data/third_party/boringssl/crypto/x509/t_crl.c +5 -8
  367. data/third_party/boringssl/crypto/x509/t_req.c +1 -3
  368. data/third_party/boringssl/crypto/x509/t_x509.c +5 -8
  369. data/third_party/boringssl/crypto/x509/x509_cmp.c +1 -1
  370. data/third_party/boringssl/crypto/x509/x509_def.c +1 -1
  371. data/third_party/boringssl/crypto/x509/x509_lu.c +114 -5
  372. data/third_party/boringssl/crypto/x509/x509_req.c +20 -0
  373. data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
  374. data/third_party/boringssl/crypto/x509/x509_trs.c +1 -0
  375. data/third_party/boringssl/crypto/x509/x509_txt.c +4 -5
  376. data/third_party/boringssl/crypto/x509/x509_vfy.c +145 -138
  377. data/third_party/boringssl/crypto/x509/x509_vpm.c +2 -0
  378. data/third_party/boringssl/crypto/x509/x509cset.c +40 -0
  379. data/third_party/boringssl/crypto/x509/x509name.c +2 -3
  380. data/third_party/boringssl/crypto/x509/x_all.c +109 -210
  381. data/third_party/boringssl/crypto/x509/x_x509.c +6 -0
  382. data/third_party/boringssl/crypto/x509v3/ext_dat.h +1 -3
  383. data/third_party/boringssl/crypto/x509v3/internal.h +56 -0
  384. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -0
  385. data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -0
  386. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +4 -2
  387. data/third_party/boringssl/crypto/x509v3/v3_akey.c +5 -2
  388. data/third_party/boringssl/crypto/x509v3/v3_alt.c +19 -13
  389. data/third_party/boringssl/crypto/x509v3/v3_conf.c +2 -1
  390. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +3 -2
  391. data/third_party/boringssl/crypto/x509v3/v3_genn.c +1 -6
  392. data/third_party/boringssl/crypto/x509v3/v3_lib.c +1 -0
  393. data/third_party/boringssl/crypto/x509v3/v3_ocsp.c +68 -0
  394. data/third_party/boringssl/crypto/x509v3/v3_pci.c +2 -1
  395. data/third_party/boringssl/crypto/x509v3/v3_purp.c +47 -69
  396. data/third_party/boringssl/crypto/x509v3/v3_skey.c +5 -2
  397. data/third_party/boringssl/crypto/x509v3/v3_utl.c +69 -25
  398. data/third_party/boringssl/include/openssl/aead.h +45 -19
  399. data/third_party/boringssl/include/openssl/aes.h +32 -7
  400. data/third_party/boringssl/include/openssl/asn1.h +7 -77
  401. data/third_party/boringssl/include/openssl/base.h +120 -6
  402. data/third_party/boringssl/include/openssl/base64.h +4 -1
  403. data/third_party/boringssl/include/openssl/bio.h +112 -81
  404. data/third_party/boringssl/include/openssl/blowfish.h +3 -3
  405. data/third_party/boringssl/include/openssl/bn.h +55 -29
  406. data/third_party/boringssl/include/openssl/buf.h +2 -2
  407. data/third_party/boringssl/include/openssl/bytestring.h +54 -32
  408. data/third_party/boringssl/include/openssl/cast.h +2 -2
  409. data/third_party/boringssl/include/openssl/cipher.h +46 -16
  410. data/third_party/boringssl/include/openssl/cmac.h +6 -2
  411. data/third_party/boringssl/include/openssl/conf.h +3 -6
  412. data/third_party/boringssl/include/openssl/cpu.h +25 -9
  413. data/third_party/boringssl/include/openssl/crypto.h +32 -10
  414. data/third_party/boringssl/include/openssl/curve25519.h +4 -4
  415. data/third_party/boringssl/include/openssl/dh.h +3 -2
  416. data/third_party/boringssl/include/openssl/digest.h +21 -7
  417. data/third_party/boringssl/include/openssl/dsa.h +8 -2
  418. data/third_party/boringssl/include/openssl/e_os2.h +18 -0
  419. data/third_party/boringssl/include/openssl/ec.h +25 -21
  420. data/third_party/boringssl/include/openssl/ec_key.h +36 -8
  421. data/third_party/boringssl/include/openssl/ecdh.h +17 -0
  422. data/third_party/boringssl/include/openssl/ecdsa.h +3 -3
  423. data/third_party/boringssl/include/openssl/engine.h +4 -4
  424. data/third_party/boringssl/include/openssl/err.h +3 -0
  425. data/third_party/boringssl/include/openssl/evp.h +199 -42
  426. data/third_party/boringssl/include/openssl/hmac.h +4 -4
  427. data/third_party/boringssl/include/openssl/hrss.h +100 -0
  428. data/third_party/boringssl/include/openssl/lhash.h +131 -23
  429. data/third_party/boringssl/include/openssl/md4.h +6 -4
  430. data/third_party/boringssl/include/openssl/md5.h +6 -4
  431. data/third_party/boringssl/include/openssl/mem.h +6 -2
  432. data/third_party/boringssl/include/openssl/nid.h +3 -0
  433. data/third_party/boringssl/include/openssl/obj.h +3 -0
  434. data/third_party/boringssl/include/openssl/pem.h +102 -64
  435. data/third_party/boringssl/include/openssl/pkcs7.h +136 -3
  436. data/third_party/boringssl/include/openssl/pkcs8.h +42 -3
  437. data/third_party/boringssl/include/openssl/pool.h +13 -2
  438. data/third_party/boringssl/include/openssl/ripemd.h +5 -4
  439. data/third_party/boringssl/include/openssl/rsa.h +46 -15
  440. data/third_party/boringssl/include/openssl/sha.h +40 -28
  441. data/third_party/boringssl/include/openssl/siphash.h +37 -0
  442. data/third_party/boringssl/include/openssl/span.h +17 -9
  443. data/third_party/boringssl/include/openssl/ssl.h +766 -393
  444. data/third_party/boringssl/include/openssl/ssl3.h +4 -3
  445. data/third_party/boringssl/include/openssl/stack.h +134 -77
  446. data/third_party/boringssl/include/openssl/thread.h +1 -1
  447. data/third_party/boringssl/include/openssl/tls1.h +25 -9
  448. data/third_party/boringssl/include/openssl/type_check.h +14 -15
  449. data/third_party/boringssl/include/openssl/x509.h +28 -3
  450. data/third_party/boringssl/include/openssl/x509_vfy.h +98 -32
  451. data/third_party/boringssl/include/openssl/x509v3.h +17 -13
  452. data/third_party/boringssl/ssl/d1_both.cc +9 -18
  453. data/third_party/boringssl/ssl/d1_lib.cc +4 -3
  454. data/third_party/boringssl/ssl/d1_pkt.cc +4 -4
  455. data/third_party/boringssl/ssl/d1_srtp.cc +15 -15
  456. data/third_party/boringssl/ssl/dtls_method.cc +0 -1
  457. data/third_party/boringssl/ssl/dtls_record.cc +28 -28
  458. data/third_party/boringssl/ssl/handoff.cc +295 -91
  459. data/third_party/boringssl/ssl/handshake.cc +133 -72
  460. data/third_party/boringssl/ssl/handshake_client.cc +218 -189
  461. data/third_party/boringssl/ssl/handshake_server.cc +399 -272
  462. data/third_party/boringssl/ssl/internal.h +1413 -928
  463. data/third_party/boringssl/ssl/s3_both.cc +175 -36
  464. data/third_party/boringssl/ssl/s3_lib.cc +9 -13
  465. data/third_party/boringssl/ssl/s3_pkt.cc +63 -29
  466. data/third_party/boringssl/ssl/ssl_aead_ctx.cc +55 -35
  467. data/third_party/boringssl/ssl/ssl_asn1.cc +57 -73
  468. data/third_party/boringssl/ssl/ssl_buffer.cc +13 -12
  469. data/third_party/boringssl/ssl/ssl_cert.cc +313 -210
  470. data/third_party/boringssl/ssl/ssl_cipher.cc +159 -221
  471. data/third_party/boringssl/ssl/ssl_file.cc +2 -0
  472. data/third_party/boringssl/ssl/ssl_key_share.cc +164 -19
  473. data/third_party/boringssl/ssl/ssl_lib.cc +847 -555
  474. data/third_party/boringssl/ssl/ssl_privkey.cc +441 -111
  475. data/third_party/boringssl/ssl/ssl_session.cc +230 -178
  476. data/third_party/boringssl/ssl/ssl_transcript.cc +21 -142
  477. data/third_party/boringssl/ssl/ssl_versions.cc +88 -93
  478. data/third_party/boringssl/ssl/ssl_x509.cc +279 -218
  479. data/third_party/boringssl/ssl/t1_enc.cc +5 -96
  480. data/third_party/boringssl/ssl/t1_lib.cc +931 -678
  481. data/third_party/boringssl/ssl/tls13_both.cc +251 -121
  482. data/third_party/boringssl/ssl/tls13_client.cc +129 -73
  483. data/third_party/boringssl/ssl/tls13_enc.cc +350 -282
  484. data/third_party/boringssl/ssl/tls13_server.cc +259 -192
  485. data/third_party/boringssl/ssl/tls_method.cc +26 -21
  486. data/third_party/boringssl/ssl/tls_record.cc +42 -47
  487. data/third_party/boringssl/third_party/fiat/curve25519.c +261 -1324
  488. data/third_party/boringssl/third_party/fiat/curve25519_32.h +911 -0
  489. data/third_party/boringssl/third_party/fiat/curve25519_64.h +559 -0
  490. data/third_party/boringssl/third_party/fiat/p256.c +238 -999
  491. data/third_party/boringssl/third_party/fiat/p256_32.h +3226 -0
  492. data/third_party/boringssl/third_party/fiat/p256_64.h +1217 -0
  493. data/third_party/upb/upb/port_def.inc +1 -1
  494. data/third_party/upb/upb/table.c +2 -1
  495. metadata +71 -43
  496. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +0 -127
  497. data/src/core/lib/gpr/mpscq.cc +0 -117
  498. data/src/core/lib/gpr/mpscq.h +0 -88
  499. data/src/core/lib/gprpp/abstract.h +0 -47
  500. data/src/core/lib/gprpp/pair.h +0 -38
  501. data/third_party/boringssl/crypto/cipher_extra/e_ssl3.c +0 -460
  502. data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +0 -256
  503. data/third_party/boringssl/include/openssl/lhash_macros.h +0 -174
  504. data/third_party/boringssl/ssl/custom_extensions.cc +0 -265
@@ -31,7 +31,7 @@ static grpc_alts_credentials_options* alts_server_options_copy(
31
31
  const grpc_alts_credentials_options* options);
32
32
 
33
33
  static void alts_server_options_destroy(
34
- grpc_alts_credentials_options* options) {}
34
+ grpc_alts_credentials_options* /*options*/) {}
35
35
 
36
36
  static const grpc_alts_credentials_options_vtable vtable = {
37
37
  alts_server_options_copy, alts_server_options_destroy};
@@ -110,17 +110,7 @@ struct grpc_channel_credentials
110
110
  create_security_connector(
111
111
  grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
112
112
  const char* target, const grpc_channel_args* args,
113
- grpc_channel_args** new_args)
114
- #if GRPC_USE_CPP_STD_LIB
115
- = 0;
116
- #else
117
- {
118
- // Tell clang-tidy that call_creds cannot be passed as const-ref.
119
- call_creds.reset();
120
- gpr_log(GPR_ERROR, "Function marked GRPC_ABSTRACT was not implemented");
121
- GPR_ASSERT(false);
122
- }
123
- #endif
113
+ grpc_channel_args** new_args) = 0;
124
114
 
125
115
  // Creates a version of the channel credentials without any attached call
126
116
  // credentials. This can be used in order to open a channel to a non-trusted
@@ -156,8 +146,6 @@ struct grpc_channel_credentials
156
146
 
157
147
  const char* type() const { return type_; }
158
148
 
159
- GRPC_ABSTRACT_BASE_CLASS
160
-
161
149
  private:
162
150
  const char* type_;
163
151
  grpc_core::Map<grpc_core::UniquePtr<char>,
@@ -248,18 +236,16 @@ struct grpc_call_credentials
248
236
  grpc_auth_metadata_context context,
249
237
  grpc_credentials_mdelem_array* md_array,
250
238
  grpc_closure* on_request_metadata,
251
- grpc_error** error) GRPC_ABSTRACT;
239
+ grpc_error** error) = 0;
252
240
 
253
241
  // Cancels a pending asynchronous operation started by
254
242
  // grpc_call_credentials_get_request_metadata() with the corresponding
255
243
  // value of \a md_array.
256
244
  virtual void cancel_get_request_metadata(
257
- grpc_credentials_mdelem_array* md_array, grpc_error* error) GRPC_ABSTRACT;
245
+ grpc_credentials_mdelem_array* md_array, grpc_error* error) = 0;
258
246
 
259
247
  const char* type() const { return type_; }
260
248
 
261
- GRPC_ABSTRACT_BASE_CLASS
262
-
263
249
  private:
264
250
  const char* type_;
265
251
  };
@@ -282,7 +268,7 @@ struct grpc_server_credentials
282
268
  virtual ~grpc_server_credentials() { DestroyProcessor(); }
283
269
 
284
270
  virtual grpc_core::RefCountedPtr<grpc_server_security_connector>
285
- create_security_connector() GRPC_ABSTRACT;
271
+ create_security_connector() = 0;
286
272
 
287
273
  const char* type() const { return type_; }
288
274
 
@@ -292,8 +278,6 @@ struct grpc_server_credentials
292
278
  void set_auth_metadata_processor(
293
279
  const grpc_auth_metadata_processor& processor);
294
280
 
295
- GRPC_ABSTRACT_BASE_CLASS
296
-
297
281
  private:
298
282
  void DestroyProcessor() {
299
283
  if (processor_.destroy != nullptr && processor_.state != nullptr) {
@@ -45,7 +45,7 @@ class grpc_fake_channel_credentials final : public grpc_channel_credentials {
45
45
  create_security_connector(
46
46
  grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
47
47
  const char* target, const grpc_channel_args* args,
48
- grpc_channel_args** new_args) override {
48
+ grpc_channel_args** /*new_args*/) override {
49
49
  return grpc_fake_channel_security_connector_create(
50
50
  this->Ref(), std::move(call_creds), target, args);
51
51
  }
@@ -89,9 +89,9 @@ const char* grpc_fake_transport_get_expected_targets(
89
89
  /* -- Metadata-only test credentials. -- */
90
90
 
91
91
  bool grpc_md_only_test_credentials::get_request_metadata(
92
- grpc_polling_entity* pollent, grpc_auth_metadata_context context,
92
+ grpc_polling_entity* /*pollent*/, grpc_auth_metadata_context /*context*/,
93
93
  grpc_credentials_mdelem_array* md_array, grpc_closure* on_request_metadata,
94
- grpc_error** error) {
94
+ grpc_error** /*error*/) {
95
95
  grpc_credentials_mdelem_array_add(md_array, md_);
96
96
  if (is_async_) {
97
97
  GRPC_CLOSURE_SCHED(on_request_metadata, GRPC_ERROR_NONE);
@@ -101,7 +101,7 @@ bool grpc_md_only_test_credentials::get_request_metadata(
101
101
  }
102
102
 
103
103
  void grpc_md_only_test_credentials::cancel_get_request_metadata(
104
- grpc_credentials_mdelem_array* md_array, grpc_error* error) {
104
+ grpc_credentials_mdelem_array* /*md_array*/, grpc_error* error) {
105
105
  GRPC_ERROR_UNREF(error);
106
106
  }
107
107
 
@@ -85,13 +85,11 @@ class grpc_oauth2_token_fetcher_credentials : public grpc_call_credentials {
85
85
  void on_http_response(grpc_credentials_metadata_request* r,
86
86
  grpc_error* error);
87
87
 
88
- GRPC_ABSTRACT_BASE_CLASS
89
-
90
88
  protected:
91
89
  virtual void fetch_oauth2(grpc_credentials_metadata_request* req,
92
90
  grpc_httpcli_context* httpcli_context,
93
91
  grpc_polling_entity* pollent, grpc_iomgr_cb_func cb,
94
- grpc_millis deadline) GRPC_ABSTRACT;
92
+ grpc_millis deadline) = 0;
95
93
 
96
94
  private:
97
95
  gpr_mu mu_;
@@ -42,6 +42,12 @@ struct grpc_tls_key_materials_config
42
42
  int version() const { return version_; }
43
43
 
44
44
  /** Setters for member fields. **/
45
+ void set_pem_root_certs(grpc_core::UniquePtr<char> pem_root_certs) {
46
+ pem_root_certs_ = std::move(pem_root_certs);
47
+ }
48
+ void add_pem_key_cert_pair(grpc_core::PemKeyCertPair pem_key_cert_pair) {
49
+ pem_key_cert_pair_list_.push_back(pem_key_cert_pair);
50
+ }
45
51
  void set_key_materials(grpc_core::UniquePtr<char> pem_root_certs,
46
52
  PemKeyCertPairList pem_key_cert_pair_list);
47
53
  void set_version(int version) { version_ = version; }
@@ -65,18 +71,46 @@ struct grpc_tls_credential_reload_config
65
71
  void (*destruct)(void* config_user_data));
66
72
  ~grpc_tls_credential_reload_config();
67
73
 
74
+ void* context() const { return context_; }
75
+ void set_context(void* context) { context_ = context; }
76
+
68
77
  int Schedule(grpc_tls_credential_reload_arg* arg) const {
78
+ if (schedule_ == nullptr) {
79
+ gpr_log(GPR_ERROR, "schedule API is nullptr");
80
+ if (arg != nullptr) {
81
+ arg->status = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL;
82
+ arg->error_details =
83
+ gpr_strdup("schedule API in credential reload config is nullptr");
84
+ }
85
+ return 1;
86
+ }
87
+ if (arg != nullptr) {
88
+ arg->config = const_cast<grpc_tls_credential_reload_config*>(this);
89
+ }
69
90
  return schedule_(config_user_data_, arg);
70
91
  }
71
92
  void Cancel(grpc_tls_credential_reload_arg* arg) const {
72
93
  if (cancel_ == nullptr) {
73
94
  gpr_log(GPR_ERROR, "cancel API is nullptr.");
95
+ if (arg != nullptr) {
96
+ arg->status = GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL;
97
+ arg->error_details =
98
+ gpr_strdup("cancel API in credential reload config is nullptr");
99
+ }
74
100
  return;
75
101
  }
102
+ if (arg != nullptr) {
103
+ arg->config = const_cast<grpc_tls_credential_reload_config*>(this);
104
+ }
76
105
  cancel_(config_user_data_, arg);
77
106
  }
78
107
 
79
108
  private:
109
+ /** This is a pointer to the wrapped language implementation of
110
+ * grpc_tls_credential_reload_config. It is necessary to implement the C
111
+ * schedule and cancel functions, given the schedule or cancel function in a
112
+ * wrapped language. **/
113
+ void* context_ = nullptr;
80
114
  /** config-specific, read-only user data that works for all channels created
81
115
  with a credential using the config. */
82
116
  void* config_user_data_;
@@ -113,18 +147,48 @@ struct grpc_tls_server_authorization_check_config
113
147
  void (*destruct)(void* config_user_data));
114
148
  ~grpc_tls_server_authorization_check_config();
115
149
 
150
+ void* context() const { return context_; }
151
+ void set_context(void* context) { context_ = context; }
152
+
116
153
  int Schedule(grpc_tls_server_authorization_check_arg* arg) const {
154
+ if (schedule_ == nullptr) {
155
+ gpr_log(GPR_ERROR, "schedule API is nullptr");
156
+ if (arg != nullptr) {
157
+ arg->status = GRPC_STATUS_NOT_FOUND;
158
+ arg->error_details = gpr_strdup(
159
+ "schedule API in server authorization check config is nullptr");
160
+ }
161
+ return 1;
162
+ }
163
+ if (arg != nullptr && context_ != nullptr) {
164
+ arg->config =
165
+ const_cast<grpc_tls_server_authorization_check_config*>(this);
166
+ }
117
167
  return schedule_(config_user_data_, arg);
118
168
  }
119
169
  void Cancel(grpc_tls_server_authorization_check_arg* arg) const {
120
170
  if (cancel_ == nullptr) {
121
171
  gpr_log(GPR_ERROR, "cancel API is nullptr.");
172
+ if (arg != nullptr) {
173
+ arg->status = GRPC_STATUS_NOT_FOUND;
174
+ arg->error_details = gpr_strdup(
175
+ "schedule API in server authorization check config is nullptr");
176
+ }
122
177
  return;
123
178
  }
179
+ if (arg != nullptr) {
180
+ arg->config =
181
+ const_cast<grpc_tls_server_authorization_check_config*>(this);
182
+ }
124
183
  cancel_(config_user_data_, arg);
125
184
  }
126
185
 
127
186
  private:
187
+ /** This is a pointer to the wrapped language implementation of
188
+ * grpc_tls_server_authorization_check_config. It is necessary to implement
189
+ * the C schedule and cancel functions, given the schedule or cancel function
190
+ * in a wrapped language. **/
191
+ void* context_ = nullptr;
128
192
  /** config-specific, read-only user data that works for all channels created
129
193
  with a Credential using the config. */
130
194
  void* config_user_data_;
@@ -81,7 +81,7 @@ class grpc_alts_channel_security_connector final
81
81
  ~grpc_alts_channel_security_connector() override { gpr_free(target_name_); }
82
82
 
83
83
  void add_handshakers(
84
- grpc_pollset_set* interested_parties,
84
+ const grpc_channel_args* args, grpc_pollset_set* interested_parties,
85
85
  grpc_core::HandshakeManager* handshake_manager) override {
86
86
  tsi_handshaker* handshaker = nullptr;
87
87
  const grpc_alts_credentials* creds =
@@ -91,7 +91,7 @@ class grpc_alts_channel_security_connector final
91
91
  interested_parties,
92
92
  &handshaker) == TSI_OK);
93
93
  handshake_manager->Add(
94
- grpc_core::SecurityHandshakerCreate(handshaker, this));
94
+ grpc_core::SecurityHandshakerCreate(handshaker, this, args));
95
95
  }
96
96
 
97
97
  void check_peer(tsi_peer peer, grpc_endpoint* ep,
@@ -142,7 +142,7 @@ class grpc_alts_server_security_connector final
142
142
  ~grpc_alts_server_security_connector() override = default;
143
143
 
144
144
  void add_handshakers(
145
- grpc_pollset_set* interested_parties,
145
+ const grpc_channel_args* args, grpc_pollset_set* interested_parties,
146
146
  grpc_core::HandshakeManager* handshake_manager) override {
147
147
  tsi_handshaker* handshaker = nullptr;
148
148
  const grpc_alts_server_credentials* creds =
@@ -151,7 +151,7 @@ class grpc_alts_server_security_connector final
151
151
  creds->options(), nullptr, creds->handshaker_service_url(),
152
152
  false, interested_parties, &handshaker) == TSI_OK);
153
153
  handshake_manager->Add(
154
- grpc_core::SecurityHandshakerCreate(handshaker, this));
154
+ grpc_core::SecurityHandshakerCreate(handshaker, this, args));
155
155
  }
156
156
 
157
157
  void check_peer(tsi_peer peer, grpc_endpoint* ep,
@@ -27,7 +27,7 @@
27
27
  #include <grpc/support/string_util.h>
28
28
 
29
29
  #include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
30
- #include "src/core/ext/filters/client_channel/lb_policy/xds/xds.h"
30
+ #include "src/core/ext/filters/client_channel/xds/xds_channel_args.h"
31
31
  #include "src/core/ext/transport/chttp2/alpn/alpn.h"
32
32
  #include "src/core/lib/channel/channel_args.h"
33
33
  #include "src/core/lib/channel/handshaker.h"
@@ -56,8 +56,8 @@ class grpc_fake_channel_security_connector final
56
56
  expected_targets_(
57
57
  gpr_strdup(grpc_fake_transport_get_expected_targets(args))),
58
58
  is_lb_channel_(
59
- grpc_channel_args_find(
60
- args, GRPC_ARG_ADDRESS_IS_XDS_LOAD_BALANCER) != nullptr ||
59
+ grpc_channel_args_find(args, GRPC_ARG_ADDRESS_IS_XDS_SERVER) !=
60
+ nullptr ||
61
61
  grpc_channel_args_find(
62
62
  args, GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER) != nullptr) {
63
63
  const grpc_arg* target_name_override_arg =
@@ -96,10 +96,11 @@ class grpc_fake_channel_security_connector final
96
96
  return GPR_ICMP(is_lb_channel_, other->is_lb_channel_);
97
97
  }
98
98
 
99
- void add_handshakers(grpc_pollset_set* interested_parties,
99
+ void add_handshakers(const grpc_channel_args* args,
100
+ grpc_pollset_set* interested_parties,
100
101
  grpc_core::HandshakeManager* handshake_mgr) override {
101
102
  handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(
102
- tsi_create_fake_handshaker(/*is_client=*/true), this));
103
+ tsi_create_fake_handshaker(/*is_client=*/true), this, args));
103
104
  }
104
105
 
105
106
  bool check_call_host(grpc_core::StringView host,
@@ -271,10 +272,11 @@ class grpc_fake_server_security_connector
271
272
  fake_check_peer(this, peer, auth_context, on_peer_checked);
272
273
  }
273
274
 
274
- void add_handshakers(grpc_pollset_set* interested_parties,
275
+ void add_handshakers(const grpc_channel_args* args,
276
+ grpc_pollset_set* interested_parties,
275
277
  grpc_core::HandshakeManager* handshake_mgr) override {
276
278
  handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(
277
- tsi_create_fake_handshaker(/*=is_client*/ false), this));
279
+ tsi_create_fake_handshaker(/*=is_client*/ false), this, args));
278
280
  }
279
281
 
280
282
  int cmp(const grpc_security_connector* other) const override {
@@ -66,6 +66,8 @@ grpc_slice GetSystemRootCerts() {
66
66
  grpc_load_file(kLinuxCertFiles[i], 1, &valid_bundle_slice);
67
67
  if (error == GRPC_ERROR_NONE) {
68
68
  return valid_bundle_slice;
69
+ } else {
70
+ GRPC_ERROR_UNREF(error);
69
71
  }
70
72
  }
71
73
  return grpc_empty_slice();
@@ -129,13 +129,13 @@ class grpc_local_channel_security_connector final
129
129
  ~grpc_local_channel_security_connector() override { gpr_free(target_name_); }
130
130
 
131
131
  void add_handshakers(
132
- grpc_pollset_set* interested_parties,
132
+ const grpc_channel_args* args, grpc_pollset_set* interested_parties,
133
133
  grpc_core::HandshakeManager* handshake_manager) override {
134
134
  tsi_handshaker* handshaker = nullptr;
135
135
  GPR_ASSERT(local_tsi_handshaker_create(true /* is_client */, &handshaker) ==
136
136
  TSI_OK);
137
137
  handshake_manager->Add(
138
- grpc_core::SecurityHandshakerCreate(handshaker, this));
138
+ grpc_core::SecurityHandshakerCreate(handshaker, this, args));
139
139
  }
140
140
 
141
141
  int cmp(const grpc_security_connector* other_sc) const override {
@@ -187,13 +187,13 @@ class grpc_local_server_security_connector final
187
187
  ~grpc_local_server_security_connector() override = default;
188
188
 
189
189
  void add_handshakers(
190
- grpc_pollset_set* interested_parties,
190
+ const grpc_channel_args* args, grpc_pollset_set* interested_parties,
191
191
  grpc_core::HandshakeManager* handshake_manager) override {
192
192
  tsi_handshaker* handshaker = nullptr;
193
193
  GPR_ASSERT(local_tsi_handshaker_create(false /* is_client */,
194
194
  &handshaker) == TSI_OK);
195
195
  handshake_manager->Add(
196
- grpc_core::SecurityHandshakerCreate(handshaker, this));
196
+ grpc_core::SecurityHandshakerCreate(handshaker, this, args));
197
197
  }
198
198
 
199
199
  void check_peer(tsi_peer peer, grpc_endpoint* ep,
@@ -53,6 +53,7 @@ grpc_channel_security_connector::grpc_channel_security_connector(
53
53
  : grpc_security_connector(url_scheme),
54
54
  channel_creds_(std::move(channel_creds)),
55
55
  request_metadata_creds_(std::move(request_metadata_creds)) {}
56
+
56
57
  grpc_channel_security_connector::~grpc_channel_security_connector() {}
57
58
 
58
59
  int grpc_security_connector_cmp(const grpc_security_connector* sc,
@@ -58,15 +58,13 @@ class grpc_security_connector
58
58
  virtual void check_peer(
59
59
  tsi_peer peer, grpc_endpoint* ep,
60
60
  grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
61
- grpc_closure* on_peer_checked) GRPC_ABSTRACT;
61
+ grpc_closure* on_peer_checked) = 0;
62
62
 
63
63
  /* Compares two security connectors. */
64
- virtual int cmp(const grpc_security_connector* other) const GRPC_ABSTRACT;
64
+ virtual int cmp(const grpc_security_connector* other) const = 0;
65
65
 
66
66
  const char* url_scheme() const { return url_scheme_; }
67
67
 
68
- GRPC_ABSTRACT_BASE_CLASS
69
-
70
68
  private:
71
69
  const char* url_scheme_;
72
70
  };
@@ -91,7 +89,9 @@ class grpc_channel_security_connector : public grpc_security_connector {
91
89
  grpc_channel_security_connector(
92
90
  const char* url_scheme,
93
91
  grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
94
- grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds);
92
+ grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds
93
+ /*,
94
+ grpc_channel_args* channel_args = nullptr*/);
95
95
  ~grpc_channel_security_connector() override;
96
96
 
97
97
  /// Checks that the host that will be set for a call is acceptable.
@@ -101,16 +101,16 @@ class grpc_channel_security_connector : public grpc_security_connector {
101
101
  virtual bool check_call_host(grpc_core::StringView host,
102
102
  grpc_auth_context* auth_context,
103
103
  grpc_closure* on_call_host_checked,
104
- grpc_error** error) GRPC_ABSTRACT;
104
+ grpc_error** error) = 0;
105
105
  /// Cancels a pending asynchronous call to
106
106
  /// grpc_channel_security_connector_check_call_host() with
107
107
  /// \a on_call_host_checked as its callback.
108
108
  virtual void cancel_check_call_host(grpc_closure* on_call_host_checked,
109
- grpc_error* error) GRPC_ABSTRACT;
109
+ grpc_error* error) = 0;
110
110
  /// Registers handshakers with \a handshake_mgr.
111
- virtual void add_handshakers(grpc_pollset_set* interested_parties,
112
- grpc_core::HandshakeManager* handshake_mgr)
113
- GRPC_ABSTRACT;
111
+ virtual void add_handshakers(const grpc_channel_args* args,
112
+ grpc_pollset_set* interested_parties,
113
+ grpc_core::HandshakeManager* handshake_mgr) = 0;
114
114
 
115
115
  const grpc_channel_credentials* channel_creds() const {
116
116
  return channel_creds_.get();
@@ -125,16 +125,20 @@ class grpc_channel_security_connector : public grpc_security_connector {
125
125
  return request_metadata_creds_.get();
126
126
  }
127
127
 
128
- GRPC_ABSTRACT_BASE_CLASS
129
-
130
128
  protected:
131
129
  // Helper methods to be used in subclasses.
132
130
  int channel_security_connector_cmp(
133
131
  const grpc_channel_security_connector* other) const;
134
132
 
133
+ // grpc_channel_args* channel_args() const { return channel_args_.get(); }
134
+ //// Should be called as soon as the channel args are not needed to reduce
135
+ //// memory usage.
136
+ // void clear_channel_arg() { channel_args_.reset(); }
137
+
135
138
  private:
136
139
  grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds_;
137
140
  grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds_;
141
+ grpc_core::UniquePtr<grpc_channel_args> channel_args_;
138
142
  };
139
143
 
140
144
  /* --- server_security_connector object. ---
@@ -149,9 +153,9 @@ class grpc_server_security_connector : public grpc_security_connector {
149
153
  grpc_core::RefCountedPtr<grpc_server_credentials> server_creds);
150
154
  ~grpc_server_security_connector() override = default;
151
155
 
152
- virtual void add_handshakers(grpc_pollset_set* interested_parties,
153
- grpc_core::HandshakeManager* handshake_mgr)
154
- GRPC_ABSTRACT;
156
+ virtual void add_handshakers(const grpc_channel_args* args,
157
+ grpc_pollset_set* interested_parties,
158
+ grpc_core::HandshakeManager* handshake_mgr) = 0;
155
159
 
156
160
  const grpc_server_credentials* server_creds() const {
157
161
  return server_creds_.get();
@@ -160,8 +164,6 @@ class grpc_server_security_connector : public grpc_security_connector {
160
164
  return server_creds_.get();
161
165
  }
162
166
 
163
- GRPC_ABSTRACT_BASE_CLASS
164
-
165
167
  protected:
166
168
  // Helper methods to be used in subclasses.
167
169
  int server_security_connector_cmp(