grpc 1.24.0 → 1.25.0

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

Potentially problematic release.


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

Files changed (505) 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/ev_poll_posix.cc +3 -1
  113. data/src/core/lib/iomgr/exec_ctx.h +4 -3
  114. data/src/core/lib/iomgr/executor.cc +4 -2
  115. data/src/core/lib/iomgr/executor.h +3 -0
  116. data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -6
  117. data/src/core/lib/iomgr/executor/threadpool.cc +1 -2
  118. data/src/core/lib/iomgr/executor/threadpool.h +7 -11
  119. data/src/core/lib/iomgr/resource_quota.cc +55 -51
  120. data/src/core/lib/iomgr/resource_quota.h +13 -9
  121. data/src/core/lib/iomgr/socket_utils_common_posix.cc +13 -0
  122. data/src/core/lib/iomgr/socket_utils_posix.h +4 -0
  123. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -11
  124. data/src/core/lib/iomgr/tcp_custom.cc +9 -7
  125. data/src/core/lib/iomgr/tcp_posix.cc +20 -16
  126. data/src/core/lib/iomgr/tcp_server.h +1 -4
  127. data/src/core/lib/iomgr/tcp_server_custom.cc +5 -5
  128. data/src/core/lib/iomgr/tcp_server_posix.cc +1 -1
  129. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -11
  130. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  131. data/src/core/lib/iomgr/udp_server.cc +3 -2
  132. data/src/core/lib/iomgr/udp_server.h +6 -12
  133. data/src/core/lib/json/json.h +1 -1
  134. data/src/core/lib/json/json_string.cc +2 -2
  135. data/src/core/lib/profiling/basic_timers.cc +2 -2
  136. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -2
  137. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -1
  138. data/src/core/lib/security/credentials/credentials.h +4 -20
  139. data/src/core/lib/security/credentials/fake/fake_credentials.cc +4 -4
  140. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -3
  141. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +64 -0
  142. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +4 -4
  143. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -7
  144. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +2 -0
  145. data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -4
  146. data/src/core/lib/security/security_connector/security_connector.cc +1 -0
  147. data/src/core/lib/security/security_connector/security_connector.h +19 -17
  148. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +8 -5
  149. data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
  150. data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
  151. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +14 -6
  152. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +4 -2
  153. data/src/core/lib/security/transport/client_auth_filter.cc +17 -17
  154. data/src/core/lib/security/transport/security_handshaker.cc +29 -13
  155. data/src/core/lib/security/transport/security_handshaker.h +4 -2
  156. data/src/core/lib/security/transport/server_auth_filter.cc +14 -14
  157. data/src/core/lib/slice/slice.cc +2 -10
  158. data/src/core/lib/slice/slice_hash_table.h +4 -6
  159. data/src/core/lib/slice/slice_intern.cc +42 -39
  160. data/src/core/lib/slice/slice_internal.h +3 -3
  161. data/src/core/lib/slice/slice_utils.h +21 -4
  162. data/src/core/lib/slice/slice_weak_hash_table.h +4 -6
  163. data/src/core/lib/surface/call.cc +3 -3
  164. data/src/core/lib/surface/channel.cc +7 -0
  165. data/src/core/lib/surface/completion_queue.cc +12 -11
  166. data/src/core/lib/surface/completion_queue.h +4 -2
  167. data/src/core/lib/surface/init.cc +1 -0
  168. data/src/core/lib/surface/lame_client.cc +33 -18
  169. data/src/core/lib/surface/server.cc +77 -76
  170. data/src/core/lib/surface/version.cc +1 -1
  171. data/src/core/lib/transport/byte_stream.h +3 -7
  172. data/src/core/lib/transport/connectivity_state.cc +112 -98
  173. data/src/core/lib/transport/connectivity_state.h +100 -50
  174. data/src/core/lib/transport/static_metadata.cc +276 -288
  175. data/src/core/lib/transport/static_metadata.h +73 -76
  176. data/src/core/lib/transport/status_conversion.cc +1 -1
  177. data/src/core/lib/transport/status_metadata.cc +1 -1
  178. data/src/core/lib/transport/transport.cc +2 -2
  179. data/src/core/lib/transport/transport.h +12 -4
  180. data/src/core/lib/transport/transport_op_string.cc +14 -11
  181. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
  182. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +1 -1
  183. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +5 -5
  184. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -2
  185. data/src/core/tsi/fake_transport_security.cc +7 -5
  186. data/src/core/tsi/grpc_shadow_boringssl.h +2918 -2627
  187. data/src/core/tsi/local_transport_security.cc +8 -6
  188. data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -3
  189. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -2
  190. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +7 -5
  191. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -6
  192. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -2
  193. data/src/core/tsi/ssl_transport_security.cc +12 -12
  194. data/src/core/tsi/ssl_transport_security.h +2 -2
  195. data/src/core/tsi/transport_security_grpc.cc +7 -0
  196. data/src/core/tsi/transport_security_grpc.h +6 -0
  197. data/src/ruby/ext/grpc/extconf.rb +1 -0
  198. data/src/ruby/ext/grpc/rb_call.c +1 -1
  199. data/src/ruby/ext/grpc/rb_channel.c +1 -1
  200. data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
  201. data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
  202. data/src/ruby/lib/grpc/version.rb +1 -1
  203. data/src/ruby/spec/google_rpc_status_utils_spec.rb +2 -2
  204. data/third_party/boringssl/crypto/asn1/a_bool.c +18 -5
  205. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +17 -221
  206. data/third_party/boringssl/crypto/asn1/a_dup.c +0 -24
  207. data/third_party/boringssl/crypto/asn1/a_enum.c +2 -2
  208. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +10 -72
  209. data/third_party/boringssl/crypto/asn1/a_int.c +12 -71
  210. data/third_party/boringssl/crypto/asn1/a_mbstr.c +110 -216
  211. data/third_party/boringssl/crypto/asn1/a_object.c +16 -5
  212. data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
  213. data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -1
  214. data/third_party/boringssl/crypto/asn1/tasn_enc.c +3 -1
  215. data/third_party/boringssl/crypto/base64/base64.c +2 -2
  216. data/third_party/boringssl/crypto/bio/bio.c +73 -9
  217. data/third_party/boringssl/crypto/bio/connect.c +4 -0
  218. data/third_party/boringssl/crypto/bio/fd.c +4 -0
  219. data/third_party/boringssl/crypto/bio/file.c +5 -2
  220. data/third_party/boringssl/crypto/bio/socket.c +4 -0
  221. data/third_party/boringssl/crypto/bio/socket_helper.c +4 -0
  222. data/third_party/boringssl/crypto/bn_extra/convert.c +11 -7
  223. data/third_party/boringssl/crypto/bytestring/ber.c +8 -4
  224. data/third_party/boringssl/crypto/bytestring/cbb.c +19 -7
  225. data/third_party/boringssl/crypto/bytestring/cbs.c +28 -15
  226. data/third_party/boringssl/crypto/bytestring/internal.h +28 -7
  227. data/third_party/boringssl/crypto/bytestring/unicode.c +155 -0
  228. data/third_party/boringssl/crypto/chacha/chacha.c +36 -19
  229. data/third_party/boringssl/crypto/chacha/internal.h +45 -0
  230. data/third_party/boringssl/crypto/cipher_extra/cipher_extra.c +29 -0
  231. data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +269 -25
  232. data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +16 -14
  233. data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +54 -38
  234. data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +133 -41
  235. data/third_party/boringssl/crypto/cipher_extra/e_tls.c +23 -15
  236. data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +24 -15
  237. data/third_party/boringssl/crypto/cmac/cmac.c +62 -25
  238. data/third_party/boringssl/crypto/conf/conf.c +7 -0
  239. data/third_party/boringssl/crypto/cpu-arm-linux.c +4 -148
  240. data/third_party/boringssl/crypto/cpu-arm-linux.h +201 -0
  241. data/third_party/boringssl/crypto/cpu-intel.c +45 -51
  242. data/third_party/boringssl/crypto/crypto.c +39 -22
  243. data/third_party/boringssl/crypto/curve25519/spake25519.c +1 -1
  244. data/third_party/boringssl/crypto/dsa/dsa.c +77 -53
  245. data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +20 -8
  246. data/third_party/boringssl/crypto/ec_extra/ec_derive.c +96 -0
  247. data/third_party/boringssl/crypto/{ecdh/ecdh.c → ecdh_extra/ecdh_extra.c} +20 -58
  248. data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +1 -9
  249. data/third_party/boringssl/crypto/engine/engine.c +2 -1
  250. data/third_party/boringssl/crypto/err/err.c +2 -0
  251. data/third_party/boringssl/crypto/err/internal.h +2 -2
  252. data/third_party/boringssl/crypto/evp/evp.c +89 -8
  253. data/third_party/boringssl/crypto/evp/evp_asn1.c +56 -5
  254. data/third_party/boringssl/crypto/evp/evp_ctx.c +52 -14
  255. data/third_party/boringssl/crypto/evp/internal.h +18 -1
  256. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +5 -0
  257. data/third_party/boringssl/crypto/evp/p_ec.c +51 -3
  258. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +6 -7
  259. data/third_party/boringssl/crypto/evp/p_ed25519.c +36 -3
  260. data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +76 -45
  261. data/third_party/boringssl/crypto/evp/p_rsa.c +3 -1
  262. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +5 -0
  263. data/third_party/boringssl/crypto/evp/p_x25519.c +110 -0
  264. data/third_party/boringssl/crypto/evp/p_x25519_asn1.c +249 -0
  265. data/third_party/boringssl/crypto/evp/scrypt.c +6 -2
  266. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +34 -274
  267. data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +161 -21
  268. data/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.c +111 -13
  269. data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +17 -21
  270. data/third_party/boringssl/crypto/fipsmodule/bcm.c +119 -7
  271. data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +19 -2
  272. data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +2 -2
  273. data/third_party/boringssl/crypto/fipsmodule/bn/ctx.c +93 -160
  274. data/third_party/boringssl/crypto/fipsmodule/bn/div.c +48 -57
  275. data/third_party/boringssl/crypto/fipsmodule/bn/div_extra.c +87 -0
  276. data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +143 -211
  277. data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +0 -305
  278. data/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.c +325 -0
  279. data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +168 -50
  280. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +68 -92
  281. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +7 -6
  282. data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +11 -14
  283. data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +358 -443
  284. data/third_party/boringssl/crypto/fipsmodule/bn/random.c +25 -35
  285. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +20 -25
  286. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +76 -5
  287. data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +14 -14
  288. data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +7 -2
  289. data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +383 -516
  290. data/third_party/boringssl/crypto/fipsmodule/cipher/e_des.c +4 -0
  291. data/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +3 -4
  292. data/third_party/boringssl/crypto/fipsmodule/delocate.h +3 -2
  293. data/third_party/boringssl/crypto/fipsmodule/digest/digest.c +32 -17
  294. data/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +3 -3
  295. data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +228 -122
  296. data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +34 -8
  297. data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +311 -98
  298. data/third_party/boringssl/crypto/fipsmodule/ec/felem.c +82 -0
  299. data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +263 -97
  300. data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +22 -59
  301. data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +317 -234
  302. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +9473 -9475
  303. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +313 -109
  304. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +36 -0
  305. data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +96 -0
  306. data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +126 -792
  307. data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +84 -0
  308. data/third_party/boringssl/crypto/fipsmodule/ec/util.c +163 -12
  309. data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +84 -211
  310. data/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.c +122 -0
  311. data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +60 -205
  312. data/third_party/boringssl/crypto/fipsmodule/fips_shared_support.c +32 -0
  313. data/third_party/boringssl/crypto/fipsmodule/is_fips.c +2 -0
  314. data/third_party/boringssl/crypto/fipsmodule/md4/md4.c +3 -1
  315. data/third_party/boringssl/crypto/fipsmodule/md5/internal.h +37 -0
  316. data/third_party/boringssl/crypto/fipsmodule/md5/md5.c +11 -8
  317. data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +35 -79
  318. data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +7 -39
  319. data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +7 -27
  320. data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +123 -309
  321. data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +189 -126
  322. data/third_party/boringssl/crypto/fipsmodule/modes/ofb.c +3 -2
  323. data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +2 -2
  324. data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +35 -0
  325. data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +24 -19
  326. data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +256 -77
  327. data/third_party/boringssl/crypto/fipsmodule/rsa/padding.c +10 -7
  328. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +5 -1
  329. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +131 -14
  330. data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +83 -10
  331. data/third_party/boringssl/crypto/fipsmodule/sha/internal.h +53 -0
  332. data/third_party/boringssl/crypto/fipsmodule/sha/sha1.c +9 -13
  333. data/third_party/boringssl/crypto/fipsmodule/sha/sha256.c +18 -12
  334. data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +95 -168
  335. data/third_party/boringssl/crypto/hrss/hrss.c +2201 -0
  336. data/third_party/boringssl/crypto/hrss/internal.h +62 -0
  337. data/third_party/boringssl/crypto/internal.h +95 -20
  338. data/third_party/boringssl/crypto/lhash/lhash.c +45 -33
  339. data/third_party/boringssl/crypto/mem.c +39 -2
  340. data/third_party/boringssl/crypto/obj/obj.c +4 -4
  341. data/third_party/boringssl/crypto/obj/obj_dat.h +6181 -875
  342. data/third_party/boringssl/crypto/pem/pem_all.c +2 -3
  343. data/third_party/boringssl/crypto/pem/pem_info.c +144 -162
  344. data/third_party/boringssl/crypto/pem/pem_lib.c +53 -52
  345. data/third_party/boringssl/crypto/pem/pem_pkey.c +13 -21
  346. data/third_party/boringssl/crypto/pkcs7/pkcs7.c +15 -22
  347. data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +168 -16
  348. data/third_party/boringssl/crypto/pkcs8/internal.h +11 -0
  349. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +24 -15
  350. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +42 -25
  351. data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +559 -43
  352. data/third_party/boringssl/crypto/pool/internal.h +1 -1
  353. data/third_party/boringssl/crypto/pool/pool.c +21 -0
  354. data/third_party/boringssl/crypto/rand_extra/deterministic.c +8 -0
  355. data/third_party/boringssl/crypto/rand_extra/fuchsia.c +1 -14
  356. data/third_party/boringssl/crypto/refcount_lock.c +2 -2
  357. data/third_party/boringssl/crypto/rsa_extra/rsa_print.c +22 -0
  358. data/third_party/boringssl/crypto/siphash/siphash.c +80 -0
  359. data/third_party/boringssl/crypto/stack/stack.c +83 -32
  360. data/third_party/boringssl/crypto/thread_none.c +2 -2
  361. data/third_party/boringssl/crypto/thread_pthread.c +2 -2
  362. data/third_party/boringssl/crypto/thread_win.c +38 -19
  363. data/third_party/boringssl/crypto/x509/a_strex.c +22 -2
  364. data/third_party/boringssl/crypto/x509/asn1_gen.c +2 -1
  365. data/third_party/boringssl/crypto/x509/by_dir.c +7 -0
  366. data/third_party/boringssl/crypto/x509/by_file.c +12 -10
  367. data/third_party/boringssl/crypto/x509/t_crl.c +5 -8
  368. data/third_party/boringssl/crypto/x509/t_req.c +1 -3
  369. data/third_party/boringssl/crypto/x509/t_x509.c +5 -8
  370. data/third_party/boringssl/crypto/x509/x509_cmp.c +1 -1
  371. data/third_party/boringssl/crypto/x509/x509_def.c +1 -1
  372. data/third_party/boringssl/crypto/x509/x509_lu.c +114 -5
  373. data/third_party/boringssl/crypto/x509/x509_req.c +20 -0
  374. data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
  375. data/third_party/boringssl/crypto/x509/x509_trs.c +1 -0
  376. data/third_party/boringssl/crypto/x509/x509_txt.c +4 -5
  377. data/third_party/boringssl/crypto/x509/x509_vfy.c +145 -138
  378. data/third_party/boringssl/crypto/x509/x509_vpm.c +2 -0
  379. data/third_party/boringssl/crypto/x509/x509cset.c +40 -0
  380. data/third_party/boringssl/crypto/x509/x509name.c +2 -3
  381. data/third_party/boringssl/crypto/x509/x_all.c +109 -210
  382. data/third_party/boringssl/crypto/x509/x_x509.c +6 -0
  383. data/third_party/boringssl/crypto/x509v3/ext_dat.h +1 -3
  384. data/third_party/boringssl/crypto/x509v3/internal.h +56 -0
  385. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -0
  386. data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -0
  387. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +4 -2
  388. data/third_party/boringssl/crypto/x509v3/v3_akey.c +5 -2
  389. data/third_party/boringssl/crypto/x509v3/v3_alt.c +19 -13
  390. data/third_party/boringssl/crypto/x509v3/v3_conf.c +2 -1
  391. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +3 -2
  392. data/third_party/boringssl/crypto/x509v3/v3_genn.c +1 -6
  393. data/third_party/boringssl/crypto/x509v3/v3_lib.c +1 -0
  394. data/third_party/boringssl/crypto/x509v3/v3_ocsp.c +68 -0
  395. data/third_party/boringssl/crypto/x509v3/v3_pci.c +2 -1
  396. data/third_party/boringssl/crypto/x509v3/v3_purp.c +47 -69
  397. data/third_party/boringssl/crypto/x509v3/v3_skey.c +5 -2
  398. data/third_party/boringssl/crypto/x509v3/v3_utl.c +69 -25
  399. data/third_party/boringssl/include/openssl/aead.h +45 -19
  400. data/third_party/boringssl/include/openssl/aes.h +32 -7
  401. data/third_party/boringssl/include/openssl/asn1.h +7 -77
  402. data/third_party/boringssl/include/openssl/base.h +120 -6
  403. data/third_party/boringssl/include/openssl/base64.h +4 -1
  404. data/third_party/boringssl/include/openssl/bio.h +112 -81
  405. data/third_party/boringssl/include/openssl/blowfish.h +3 -3
  406. data/third_party/boringssl/include/openssl/bn.h +55 -29
  407. data/third_party/boringssl/include/openssl/buf.h +2 -2
  408. data/third_party/boringssl/include/openssl/bytestring.h +54 -32
  409. data/third_party/boringssl/include/openssl/cast.h +2 -2
  410. data/third_party/boringssl/include/openssl/cipher.h +46 -16
  411. data/third_party/boringssl/include/openssl/cmac.h +6 -2
  412. data/third_party/boringssl/include/openssl/conf.h +3 -6
  413. data/third_party/boringssl/include/openssl/cpu.h +25 -9
  414. data/third_party/boringssl/include/openssl/crypto.h +32 -10
  415. data/third_party/boringssl/include/openssl/curve25519.h +4 -4
  416. data/third_party/boringssl/include/openssl/dh.h +3 -2
  417. data/third_party/boringssl/include/openssl/digest.h +21 -7
  418. data/third_party/boringssl/include/openssl/dsa.h +8 -2
  419. data/third_party/boringssl/include/openssl/e_os2.h +18 -0
  420. data/third_party/boringssl/include/openssl/ec.h +25 -21
  421. data/third_party/boringssl/include/openssl/ec_key.h +36 -8
  422. data/third_party/boringssl/include/openssl/ecdh.h +17 -0
  423. data/third_party/boringssl/include/openssl/ecdsa.h +3 -3
  424. data/third_party/boringssl/include/openssl/engine.h +4 -4
  425. data/third_party/boringssl/include/openssl/err.h +3 -0
  426. data/third_party/boringssl/include/openssl/evp.h +199 -42
  427. data/third_party/boringssl/include/openssl/hmac.h +4 -4
  428. data/third_party/boringssl/include/openssl/hrss.h +100 -0
  429. data/third_party/boringssl/include/openssl/lhash.h +131 -23
  430. data/third_party/boringssl/include/openssl/md4.h +6 -4
  431. data/third_party/boringssl/include/openssl/md5.h +6 -4
  432. data/third_party/boringssl/include/openssl/mem.h +6 -2
  433. data/third_party/boringssl/include/openssl/nid.h +3 -0
  434. data/third_party/boringssl/include/openssl/obj.h +3 -0
  435. data/third_party/boringssl/include/openssl/pem.h +102 -64
  436. data/third_party/boringssl/include/openssl/pkcs7.h +136 -3
  437. data/third_party/boringssl/include/openssl/pkcs8.h +42 -3
  438. data/third_party/boringssl/include/openssl/pool.h +13 -2
  439. data/third_party/boringssl/include/openssl/ripemd.h +5 -4
  440. data/third_party/boringssl/include/openssl/rsa.h +46 -15
  441. data/third_party/boringssl/include/openssl/sha.h +40 -28
  442. data/third_party/boringssl/include/openssl/siphash.h +37 -0
  443. data/third_party/boringssl/include/openssl/span.h +17 -9
  444. data/third_party/boringssl/include/openssl/ssl.h +766 -393
  445. data/third_party/boringssl/include/openssl/ssl3.h +4 -3
  446. data/third_party/boringssl/include/openssl/stack.h +134 -77
  447. data/third_party/boringssl/include/openssl/thread.h +1 -1
  448. data/third_party/boringssl/include/openssl/tls1.h +25 -9
  449. data/third_party/boringssl/include/openssl/type_check.h +14 -15
  450. data/third_party/boringssl/include/openssl/x509.h +28 -3
  451. data/third_party/boringssl/include/openssl/x509_vfy.h +98 -32
  452. data/third_party/boringssl/include/openssl/x509v3.h +17 -13
  453. data/third_party/boringssl/ssl/d1_both.cc +9 -18
  454. data/third_party/boringssl/ssl/d1_lib.cc +4 -3
  455. data/third_party/boringssl/ssl/d1_pkt.cc +4 -4
  456. data/third_party/boringssl/ssl/d1_srtp.cc +15 -15
  457. data/third_party/boringssl/ssl/dtls_method.cc +0 -1
  458. data/third_party/boringssl/ssl/dtls_record.cc +28 -28
  459. data/third_party/boringssl/ssl/handoff.cc +295 -91
  460. data/third_party/boringssl/ssl/handshake.cc +133 -72
  461. data/third_party/boringssl/ssl/handshake_client.cc +218 -189
  462. data/third_party/boringssl/ssl/handshake_server.cc +399 -272
  463. data/third_party/boringssl/ssl/internal.h +1413 -928
  464. data/third_party/boringssl/ssl/s3_both.cc +175 -36
  465. data/third_party/boringssl/ssl/s3_lib.cc +9 -13
  466. data/third_party/boringssl/ssl/s3_pkt.cc +63 -29
  467. data/third_party/boringssl/ssl/ssl_aead_ctx.cc +55 -35
  468. data/third_party/boringssl/ssl/ssl_asn1.cc +57 -73
  469. data/third_party/boringssl/ssl/ssl_buffer.cc +13 -12
  470. data/third_party/boringssl/ssl/ssl_cert.cc +313 -210
  471. data/third_party/boringssl/ssl/ssl_cipher.cc +159 -221
  472. data/third_party/boringssl/ssl/ssl_file.cc +2 -0
  473. data/third_party/boringssl/ssl/ssl_key_share.cc +164 -19
  474. data/third_party/boringssl/ssl/ssl_lib.cc +847 -555
  475. data/third_party/boringssl/ssl/ssl_privkey.cc +441 -111
  476. data/third_party/boringssl/ssl/ssl_session.cc +230 -178
  477. data/third_party/boringssl/ssl/ssl_transcript.cc +21 -142
  478. data/third_party/boringssl/ssl/ssl_versions.cc +88 -93
  479. data/third_party/boringssl/ssl/ssl_x509.cc +279 -218
  480. data/third_party/boringssl/ssl/t1_enc.cc +5 -96
  481. data/third_party/boringssl/ssl/t1_lib.cc +931 -678
  482. data/third_party/boringssl/ssl/tls13_both.cc +251 -121
  483. data/third_party/boringssl/ssl/tls13_client.cc +129 -73
  484. data/third_party/boringssl/ssl/tls13_enc.cc +350 -282
  485. data/third_party/boringssl/ssl/tls13_server.cc +259 -192
  486. data/third_party/boringssl/ssl/tls_method.cc +26 -21
  487. data/third_party/boringssl/ssl/tls_record.cc +42 -47
  488. data/third_party/boringssl/third_party/fiat/curve25519.c +261 -1324
  489. data/third_party/boringssl/third_party/fiat/curve25519_32.h +911 -0
  490. data/third_party/boringssl/third_party/fiat/curve25519_64.h +559 -0
  491. data/third_party/boringssl/third_party/fiat/p256.c +238 -999
  492. data/third_party/boringssl/third_party/fiat/p256_32.h +3226 -0
  493. data/third_party/boringssl/third_party/fiat/p256_64.h +1217 -0
  494. data/third_party/upb/upb/port_def.inc +1 -1
  495. data/third_party/upb/upb/table.c +2 -1
  496. metadata +72 -44
  497. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +0 -127
  498. data/src/core/lib/gpr/mpscq.cc +0 -117
  499. data/src/core/lib/gpr/mpscq.h +0 -88
  500. data/src/core/lib/gprpp/abstract.h +0 -47
  501. data/src/core/lib/gprpp/pair.h +0 -38
  502. data/third_party/boringssl/crypto/cipher_extra/e_ssl3.c +0 -460
  503. data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +0 -256
  504. data/third_party/boringssl/include/openssl/lhash_macros.h +0 -174
  505. data/third_party/boringssl/ssl/custom_extensions.cc +0 -265
@@ -56,7 +56,8 @@ grpc_error* ssl_check_peer(
56
56
  gpr_free(msg);
57
57
  return error;
58
58
  }
59
- *auth_context = grpc_ssl_peer_to_auth_context(peer);
59
+ *auth_context =
60
+ grpc_ssl_peer_to_auth_context(peer, GRPC_SSL_TRANSPORT_SECURITY_TYPE);
60
61
  return GRPC_ERROR_NONE;
61
62
  }
62
63
 
@@ -116,7 +117,8 @@ class grpc_ssl_channel_security_connector final
116
117
  return GRPC_SECURITY_OK;
117
118
  }
118
119
 
119
- void add_handshakers(grpc_pollset_set* interested_parties,
120
+ void add_handshakers(const grpc_channel_args* args,
121
+ grpc_pollset_set* interested_parties,
120
122
  grpc_core::HandshakeManager* handshake_mgr) override {
121
123
  // Instantiate TSI handshaker.
122
124
  tsi_handshaker* tsi_hs = nullptr;
@@ -131,7 +133,7 @@ class grpc_ssl_channel_security_connector final
131
133
  return;
132
134
  }
133
135
  // Create handshakers.
134
- handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(tsi_hs, this));
136
+ handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(tsi_hs, this, args));
135
137
  }
136
138
 
137
139
  void check_peer(tsi_peer peer, grpc_endpoint* ep,
@@ -278,7 +280,8 @@ class grpc_ssl_server_security_connector
278
280
  return GRPC_SECURITY_OK;
279
281
  }
280
282
 
281
- void add_handshakers(grpc_pollset_set* interested_parties,
283
+ void add_handshakers(const grpc_channel_args* args,
284
+ grpc_pollset_set* interested_parties,
282
285
  grpc_core::HandshakeManager* handshake_mgr) override {
283
286
  // Instantiate TSI handshaker.
284
287
  try_fetch_ssl_server_credentials();
@@ -291,7 +294,7 @@ class grpc_ssl_server_security_connector
291
294
  return;
292
295
  }
293
296
  // Create handshakers.
294
- handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(tsi_hs, this));
297
+ handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(tsi_hs, this, args));
295
298
  }
296
299
 
297
300
  void check_peer(tsi_peer peer, grpc_endpoint* ep,
@@ -195,7 +195,7 @@ int grpc_ssl_cmp_target_name(
195
195
  }
196
196
 
197
197
  grpc_core::RefCountedPtr<grpc_auth_context> grpc_ssl_peer_to_auth_context(
198
- const tsi_peer* peer) {
198
+ const tsi_peer* peer, const char* transport_security_type) {
199
199
  size_t i;
200
200
  const char* peer_identity_property_name = nullptr;
201
201
 
@@ -205,7 +205,7 @@ grpc_core::RefCountedPtr<grpc_auth_context> grpc_ssl_peer_to_auth_context(
205
205
  grpc_core::MakeRefCounted<grpc_auth_context>(nullptr);
206
206
  grpc_auth_context_add_cstring_property(
207
207
  ctx.get(), GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME,
208
- GRPC_SSL_TRANSPORT_SECURITY_TYPE);
208
+ transport_security_type);
209
209
  for (i = 0; i < peer->property_count; i++) {
210
210
  const tsi_peer_property* prop = &peer->properties[i];
211
211
  if (prop->name == nullptr) continue;
@@ -85,7 +85,7 @@ grpc_security_status grpc_ssl_tsi_server_handshaker_factory_init(
85
85
 
86
86
  /* Exposed for testing only. */
87
87
  grpc_core::RefCountedPtr<grpc_auth_context> grpc_ssl_peer_to_auth_context(
88
- const tsi_peer* peer);
88
+ const tsi_peer* peer, const char* transport_security_type);
89
89
  tsi_peer grpc_shallow_peer_from_ssl_auth_context(
90
90
  const grpc_auth_context* auth_context);
91
91
  void grpc_shallow_peer_destruct(tsi_peer* peer);
@@ -104,6 +104,9 @@ grpc_status_code TlsFetchKeyMaterials(
104
104
  }
105
105
  }
106
106
  gpr_free((void*)arg->error_details);
107
+ if (arg->destroy_context != nullptr) {
108
+ arg->destroy_context(arg->context);
109
+ }
107
110
  grpc_core::Delete(arg);
108
111
  }
109
112
  return status;
@@ -138,7 +141,7 @@ SpiffeChannelSecurityConnector::~SpiffeChannelSecurityConnector() {
138
141
  }
139
142
 
140
143
  void SpiffeChannelSecurityConnector::add_handshakers(
141
- grpc_pollset_set* interested_parties,
144
+ const grpc_channel_args* args, grpc_pollset_set* interested_parties,
142
145
  grpc_core::HandshakeManager* handshake_mgr) {
143
146
  if (RefreshHandshakerFactory() != GRPC_SECURITY_OK) {
144
147
  gpr_log(GPR_ERROR, "Handshaker factory refresh failed.");
@@ -157,7 +160,7 @@ void SpiffeChannelSecurityConnector::add_handshakers(
157
160
  return;
158
161
  }
159
162
  // Create handshakers.
160
- handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(tsi_hs, this));
163
+ handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(tsi_hs, this, args));
161
164
  }
162
165
 
163
166
  void SpiffeChannelSecurityConnector::check_peer(
@@ -173,7 +176,8 @@ void SpiffeChannelSecurityConnector::check_peer(
173
176
  tsi_peer_destruct(&peer);
174
177
  return;
175
178
  }
176
- *auth_context = grpc_ssl_peer_to_auth_context(&peer);
179
+ *auth_context = grpc_ssl_peer_to_auth_context(
180
+ &peer, GRPC_TLS_SPIFFE_TRANSPORT_SECURITY_TYPE);
177
181
  const SpiffeCredentials* creds =
178
182
  static_cast<const SpiffeCredentials*>(channel_creds());
179
183
  const grpc_tls_server_authorization_check_config* config =
@@ -392,6 +396,9 @@ void SpiffeChannelSecurityConnector::ServerAuthorizationCheckArgDestroy(
392
396
  gpr_free((void*)arg->target_name);
393
397
  gpr_free((void*)arg->peer_cert);
394
398
  gpr_free((void*)arg->error_details);
399
+ if (arg->destroy_context != nullptr) {
400
+ arg->destroy_context(arg->context);
401
+ }
395
402
  grpc_core::Delete(arg);
396
403
  }
397
404
 
@@ -412,7 +419,7 @@ SpiffeServerSecurityConnector::~SpiffeServerSecurityConnector() {
412
419
  }
413
420
 
414
421
  void SpiffeServerSecurityConnector::add_handshakers(
415
- grpc_pollset_set* interested_parties,
422
+ const grpc_channel_args* args, grpc_pollset_set* interested_parties,
416
423
  grpc_core::HandshakeManager* handshake_mgr) {
417
424
  /* Refresh handshaker factory if needed. */
418
425
  if (RefreshHandshakerFactory() != GRPC_SECURITY_OK) {
@@ -428,7 +435,7 @@ void SpiffeServerSecurityConnector::add_handshakers(
428
435
  tsi_result_to_string(result));
429
436
  return;
430
437
  }
431
- handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(tsi_hs, this));
438
+ handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(tsi_hs, this, args));
432
439
  }
433
440
 
434
441
  void SpiffeServerSecurityConnector::check_peer(
@@ -436,7 +443,8 @@ void SpiffeServerSecurityConnector::check_peer(
436
443
  grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
437
444
  grpc_closure* on_peer_checked) {
438
445
  grpc_error* error = grpc_ssl_check_alpn(&peer);
439
- *auth_context = grpc_ssl_peer_to_auth_context(&peer);
446
+ *auth_context = grpc_ssl_peer_to_auth_context(
447
+ &peer, GRPC_TLS_SPIFFE_TRANSPORT_SECURITY_TYPE);
440
448
  tsi_peer_destruct(&peer);
441
449
  GRPC_CLOSURE_SCHED(on_peer_checked, error);
442
450
  }
@@ -47,7 +47,8 @@ class SpiffeChannelSecurityConnector final
47
47
  const char* target_name, const char* overridden_target_name);
48
48
  ~SpiffeChannelSecurityConnector() override;
49
49
 
50
- void add_handshakers(grpc_pollset_set* interested_parties,
50
+ void add_handshakers(const grpc_channel_args* args,
51
+ grpc_pollset_set* interested_parties,
51
52
  grpc_core::HandshakeManager* handshake_mgr) override;
52
53
 
53
54
  void check_peer(tsi_peer peer, grpc_endpoint* ep,
@@ -117,7 +118,8 @@ class SpiffeServerSecurityConnector final
117
118
  grpc_core::RefCountedPtr<grpc_server_credentials> server_creds);
118
119
  ~SpiffeServerSecurityConnector() override;
119
120
 
120
- void add_handshakers(grpc_pollset_set* interested_parties,
121
+ void add_handshakers(const grpc_channel_args* args,
122
+ grpc_pollset_set* interested_parties,
121
123
  grpc_core::HandshakeManager* handshake_mgr) override;
122
124
 
123
125
  void check_peer(tsi_peer peer, grpc_endpoint* ep,
@@ -324,7 +324,7 @@ static void cancel_check_call_host(void* arg, grpc_error* error) {
324
324
  }
325
325
  }
326
326
 
327
- static void auth_start_transport_stream_op_batch(
327
+ static void client_auth_start_transport_stream_op_batch(
328
328
  grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
329
329
  GPR_TIMER_SCOPE("auth_start_transport_stream_op_batch", 0);
330
330
 
@@ -369,29 +369,29 @@ static void auth_start_transport_stream_op_batch(
369
369
  }
370
370
 
371
371
  /* Constructor for call_data */
372
- static grpc_error* init_call_elem(grpc_call_element* elem,
373
- const grpc_call_element_args* args) {
372
+ static grpc_error* client_auth_init_call_elem(
373
+ grpc_call_element* elem, const grpc_call_element_args* args) {
374
374
  new (elem->call_data) call_data(elem, *args);
375
375
  return GRPC_ERROR_NONE;
376
376
  }
377
377
 
378
- static void set_pollset_or_pollset_set(grpc_call_element* elem,
379
- grpc_polling_entity* pollent) {
378
+ static void client_auth_set_pollset_or_pollset_set(
379
+ grpc_call_element* elem, grpc_polling_entity* pollent) {
380
380
  call_data* calld = static_cast<call_data*>(elem->call_data);
381
381
  calld->pollent = pollent;
382
382
  }
383
383
 
384
384
  /* Destructor for call_data */
385
- static void destroy_call_elem(grpc_call_element* elem,
386
- const grpc_call_final_info* final_info,
387
- grpc_closure* ignored) {
385
+ static void client_auth_destroy_call_elem(
386
+ grpc_call_element* elem, const grpc_call_final_info* final_info,
387
+ grpc_closure* ignored) {
388
388
  call_data* calld = static_cast<call_data*>(elem->call_data);
389
389
  calld->destroy();
390
390
  }
391
391
 
392
392
  /* Constructor for channel_data */
393
- static grpc_error* init_channel_elem(grpc_channel_element* elem,
394
- grpc_channel_element_args* args) {
393
+ static grpc_error* client_auth_init_channel_elem(
394
+ grpc_channel_element* elem, grpc_channel_element_args* args) {
395
395
  /* The first and the last filters tend to be implemented differently to
396
396
  handle the case that there's no 'next' filter to call on the up or down
397
397
  path */
@@ -414,20 +414,20 @@ static grpc_error* init_channel_elem(grpc_channel_element* elem,
414
414
  }
415
415
 
416
416
  /* Destructor for channel data */
417
- static void destroy_channel_elem(grpc_channel_element* elem) {
417
+ static void client_auth_destroy_channel_elem(grpc_channel_element* elem) {
418
418
  channel_data* chand = static_cast<channel_data*>(elem->channel_data);
419
419
  chand->~channel_data();
420
420
  }
421
421
 
422
422
  const grpc_channel_filter grpc_client_auth_filter = {
423
- auth_start_transport_stream_op_batch,
423
+ client_auth_start_transport_stream_op_batch,
424
424
  grpc_channel_next_op,
425
425
  sizeof(call_data),
426
- init_call_elem,
427
- set_pollset_or_pollset_set,
428
- destroy_call_elem,
426
+ client_auth_init_call_elem,
427
+ client_auth_set_pollset_or_pollset_set,
428
+ client_auth_destroy_call_elem,
429
429
  sizeof(channel_data),
430
- init_channel_elem,
431
- destroy_channel_elem,
430
+ client_auth_init_channel_elem,
431
+ client_auth_destroy_channel_elem,
432
432
  grpc_channel_next_get_info,
433
433
  "client-auth"};
@@ -22,6 +22,7 @@
22
22
 
23
23
  #include <stdbool.h>
24
24
  #include <string.h>
25
+ #include <limits>
25
26
 
26
27
  #include <grpc/slice_buffer.h>
27
28
  #include <grpc/support/alloc.h>
@@ -46,7 +47,8 @@ namespace {
46
47
  class SecurityHandshaker : public Handshaker {
47
48
  public:
48
49
  SecurityHandshaker(tsi_handshaker* handshaker,
49
- grpc_security_connector* connector);
50
+ grpc_security_connector* connector,
51
+ const grpc_channel_args* args);
50
52
  ~SecurityHandshaker() override;
51
53
  void Shutdown(grpc_error* why) override;
52
54
  void DoHandshake(grpc_tcp_server_acceptor* acceptor,
@@ -97,15 +99,23 @@ class SecurityHandshaker : public Handshaker {
97
99
  grpc_closure on_peer_checked_;
98
100
  RefCountedPtr<grpc_auth_context> auth_context_;
99
101
  tsi_handshaker_result* handshaker_result_ = nullptr;
102
+ size_t max_frame_size_ = 0;
100
103
  };
101
104
 
102
105
  SecurityHandshaker::SecurityHandshaker(tsi_handshaker* handshaker,
103
- grpc_security_connector* connector)
106
+ grpc_security_connector* connector,
107
+ const grpc_channel_args* args)
104
108
  : handshaker_(handshaker),
105
109
  connector_(connector->Ref(DEBUG_LOCATION, "handshake")),
106
110
  handshake_buffer_size_(GRPC_INITIAL_HANDSHAKE_BUFFER_SIZE),
107
111
  handshake_buffer_(
108
112
  static_cast<uint8_t*>(gpr_malloc(handshake_buffer_size_))) {
113
+ const grpc_arg* arg =
114
+ grpc_channel_args_find(args, GRPC_ARG_TSI_MAX_FRAME_SIZE);
115
+ if (arg != nullptr && arg->type == GRPC_ARG_INTEGER) {
116
+ max_frame_size_ = grpc_channel_arg_get_integer(
117
+ arg, {0, 0, std::numeric_limits<int>::max()});
118
+ }
109
119
  gpr_mu_init(&mu_);
110
120
  grpc_slice_buffer_init(&outgoing_);
111
121
  GRPC_CLOSURE_INIT(&on_handshake_data_sent_to_peer_,
@@ -201,7 +211,8 @@ void SecurityHandshaker::OnPeerCheckedInner(grpc_error* error) {
201
211
  // Create zero-copy frame protector, if implemented.
202
212
  tsi_zero_copy_grpc_protector* zero_copy_protector = nullptr;
203
213
  tsi_result result = tsi_handshaker_result_create_zero_copy_grpc_protector(
204
- handshaker_result_, nullptr, &zero_copy_protector);
214
+ handshaker_result_, max_frame_size_ == 0 ? nullptr : &max_frame_size_,
215
+ &zero_copy_protector);
205
216
  if (result != TSI_OK && result != TSI_UNIMPLEMENTED) {
206
217
  error = grpc_set_tsi_error_result(
207
218
  GRPC_ERROR_CREATE_FROM_STATIC_STRING(
@@ -213,8 +224,9 @@ void SecurityHandshaker::OnPeerCheckedInner(grpc_error* error) {
213
224
  // Create frame protector if zero-copy frame protector is NULL.
214
225
  tsi_frame_protector* protector = nullptr;
215
226
  if (zero_copy_protector == nullptr) {
216
- result = tsi_handshaker_result_create_frame_protector(handshaker_result_,
217
- nullptr, &protector);
227
+ result = tsi_handshaker_result_create_frame_protector(
228
+ handshaker_result_, max_frame_size_ == 0 ? nullptr : &max_frame_size_,
229
+ &protector);
218
230
  if (result != TSI_OK) {
219
231
  error = grpc_set_tsi_error_result(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
220
232
  "Frame protector creation failed"),
@@ -459,7 +471,8 @@ class ClientSecurityHandshakerFactory : public HandshakerFactory {
459
471
  reinterpret_cast<grpc_channel_security_connector*>(
460
472
  grpc_security_connector_find_in_args(args));
461
473
  if (security_connector) {
462
- security_connector->add_handshakers(interested_parties, handshake_mgr);
474
+ security_connector->add_handshakers(args, interested_parties,
475
+ handshake_mgr);
463
476
  }
464
477
  }
465
478
  ~ClientSecurityHandshakerFactory() override = default;
@@ -474,7 +487,8 @@ class ServerSecurityHandshakerFactory : public HandshakerFactory {
474
487
  reinterpret_cast<grpc_server_security_connector*>(
475
488
  grpc_security_connector_find_in_args(args));
476
489
  if (security_connector) {
477
- security_connector->add_handshakers(interested_parties, handshake_mgr);
490
+ security_connector->add_handshakers(args, interested_parties,
491
+ handshake_mgr);
478
492
  }
479
493
  }
480
494
  ~ServerSecurityHandshakerFactory() override = default;
@@ -487,28 +501,30 @@ class ServerSecurityHandshakerFactory : public HandshakerFactory {
487
501
  //
488
502
 
489
503
  RefCountedPtr<Handshaker> SecurityHandshakerCreate(
490
- tsi_handshaker* handshaker, grpc_security_connector* connector) {
504
+ tsi_handshaker* handshaker, grpc_security_connector* connector,
505
+ const grpc_channel_args* args) {
491
506
  // If no TSI handshaker was created, return a handshaker that always fails.
492
507
  // Otherwise, return a real security handshaker.
493
508
  if (handshaker == nullptr) {
494
509
  return MakeRefCounted<FailHandshaker>();
495
510
  } else {
496
- return MakeRefCounted<SecurityHandshaker>(handshaker, connector);
511
+ return MakeRefCounted<SecurityHandshaker>(handshaker, connector, args);
497
512
  }
498
513
  }
499
514
 
500
515
  void SecurityRegisterHandshakerFactories() {
501
516
  HandshakerRegistry::RegisterHandshakerFactory(
502
517
  false /* at_start */, HANDSHAKER_CLIENT,
503
- UniquePtr<HandshakerFactory>(New<ClientSecurityHandshakerFactory>()));
518
+ MakeUnique<ClientSecurityHandshakerFactory>());
504
519
  HandshakerRegistry::RegisterHandshakerFactory(
505
520
  false /* at_start */, HANDSHAKER_SERVER,
506
- UniquePtr<HandshakerFactory>(New<ServerSecurityHandshakerFactory>()));
521
+ MakeUnique<ServerSecurityHandshakerFactory>());
507
522
  }
508
523
 
509
524
  } // namespace grpc_core
510
525
 
511
526
  grpc_handshaker* grpc_security_handshaker_create(
512
- tsi_handshaker* handshaker, grpc_security_connector* connector) {
513
- return SecurityHandshakerCreate(handshaker, connector).release();
527
+ tsi_handshaker* handshaker, grpc_security_connector* connector,
528
+ const grpc_channel_args* args) {
529
+ return SecurityHandshakerCreate(handshaker, connector, args).release();
514
530
  }
@@ -28,7 +28,8 @@ namespace grpc_core {
28
28
 
29
29
  /// Creates a security handshaker using \a handshaker.
30
30
  RefCountedPtr<Handshaker> SecurityHandshakerCreate(
31
- tsi_handshaker* handshaker, grpc_security_connector* connector);
31
+ tsi_handshaker* handshaker, grpc_security_connector* connector,
32
+ const grpc_channel_args* args);
32
33
 
33
34
  /// Registers security handshaker factories.
34
35
  void SecurityRegisterHandshakerFactories();
@@ -38,6 +39,7 @@ void SecurityRegisterHandshakerFactories();
38
39
  // TODO(arjunroy): This is transitional to account for the new handshaker API
39
40
  // and will eventually be removed entirely.
40
41
  grpc_handshaker* grpc_security_handshaker_create(
41
- tsi_handshaker* handshaker, grpc_security_connector* connector);
42
+ tsi_handshaker* handshaker, grpc_security_connector* connector,
43
+ const grpc_channel_args* args);
42
44
 
43
45
  #endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_SECURITY_HANDSHAKER_H */
@@ -257,7 +257,7 @@ static void recv_trailing_metadata_ready(void* user_data, grpc_error* err) {
257
257
  GRPC_CLOSURE_RUN(calld->original_recv_trailing_metadata_ready, err);
258
258
  }
259
259
 
260
- static void auth_start_transport_stream_op_batch(
260
+ static void server_auth_start_transport_stream_op_batch(
261
261
  grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
262
262
  call_data* calld = static_cast<call_data*>(elem->call_data);
263
263
  if (batch->recv_initial_metadata) {
@@ -278,23 +278,23 @@ static void auth_start_transport_stream_op_batch(
278
278
  }
279
279
 
280
280
  /* Constructor for call_data */
281
- static grpc_error* init_call_elem(grpc_call_element* elem,
282
- const grpc_call_element_args* args) {
281
+ static grpc_error* server_auth_init_call_elem(
282
+ grpc_call_element* elem, const grpc_call_element_args* args) {
283
283
  new (elem->call_data) call_data(elem, *args);
284
284
  return GRPC_ERROR_NONE;
285
285
  }
286
286
 
287
287
  /* Destructor for call_data */
288
- static void destroy_call_elem(grpc_call_element* elem,
289
- const grpc_call_final_info* final_info,
290
- grpc_closure* ignored) {
288
+ static void server_auth_destroy_call_elem(
289
+ grpc_call_element* elem, const grpc_call_final_info* final_info,
290
+ grpc_closure* ignored) {
291
291
  call_data* calld = static_cast<call_data*>(elem->call_data);
292
292
  calld->~call_data();
293
293
  }
294
294
 
295
295
  /* Constructor for channel_data */
296
- static grpc_error* init_channel_elem(grpc_channel_element* elem,
297
- grpc_channel_element_args* args) {
296
+ static grpc_error* server_auth_init_channel_elem(
297
+ grpc_channel_element* elem, grpc_channel_element_args* args) {
298
298
  GPR_ASSERT(!args->is_last);
299
299
  grpc_auth_context* auth_context =
300
300
  grpc_find_auth_context_in_args(args->channel_args);
@@ -306,20 +306,20 @@ static grpc_error* init_channel_elem(grpc_channel_element* elem,
306
306
  }
307
307
 
308
308
  /* Destructor for channel data */
309
- static void destroy_channel_elem(grpc_channel_element* elem) {
309
+ static void server_auth_destroy_channel_elem(grpc_channel_element* elem) {
310
310
  channel_data* chand = static_cast<channel_data*>(elem->channel_data);
311
311
  chand->~channel_data();
312
312
  }
313
313
 
314
314
  const grpc_channel_filter grpc_server_auth_filter = {
315
- auth_start_transport_stream_op_batch,
315
+ server_auth_start_transport_stream_op_batch,
316
316
  grpc_channel_next_op,
317
317
  sizeof(call_data),
318
- init_call_elem,
318
+ server_auth_init_call_elem,
319
319
  grpc_call_stack_ignore_set_pollset_or_pollset_set,
320
- destroy_call_elem,
320
+ server_auth_destroy_call_elem,
321
321
  sizeof(channel_data),
322
- init_channel_elem,
323
- destroy_channel_elem,
322
+ server_auth_init_channel_elem,
323
+ server_auth_destroy_channel_elem,
324
324
  grpc_channel_next_get_info,
325
325
  "server-auth"};
@@ -82,14 +82,11 @@ class NewSliceRefcount {
82
82
  &base_),
83
83
  user_destroy_(destroy),
84
84
  user_data_(user_data) {}
85
-
86
- GRPC_ALLOW_CLASS_TO_USE_NON_PUBLIC_DELETE
85
+ ~NewSliceRefcount() { user_destroy_(user_data_); }
87
86
 
88
87
  grpc_slice_refcount* base_refcount() { return &base_; }
89
88
 
90
89
  private:
91
- ~NewSliceRefcount() { user_destroy_(user_data_); }
92
-
93
90
  grpc_slice_refcount base_;
94
91
  RefCount refs_;
95
92
  void (*user_destroy_)(void*);
@@ -147,14 +144,11 @@ class NewWithLenSliceRefcount {
147
144
  user_data_(user_data),
148
145
  user_length_(user_length),
149
146
  user_destroy_(destroy) {}
150
-
151
- GRPC_ALLOW_CLASS_TO_USE_NON_PUBLIC_DELETE
147
+ ~NewWithLenSliceRefcount() { user_destroy_(user_data_, user_length_); }
152
148
 
153
149
  grpc_slice_refcount* base_refcount() { return &base_; }
154
150
 
155
151
  private:
156
- ~NewWithLenSliceRefcount() { user_destroy_(user_data_, user_length_); }
157
-
158
152
  grpc_slice_refcount base_;
159
153
  RefCount refs_;
160
154
  void* user_data_;
@@ -170,8 +164,6 @@ class MovedStringSliceRefCount {
170
164
  &base_),
171
165
  str_(std::move(str)) {}
172
166
 
173
- GRPC_ALLOW_CLASS_TO_USE_NON_PUBLIC_DELETE
174
-
175
167
  grpc_slice_refcount* base_refcount() { return &base_; }
176
168
 
177
169
  private: