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
@@ -84,7 +84,8 @@ static const tsi_zero_copy_grpc_protector_vtable
84
84
  local_zero_copy_grpc_protector_vtable = {
85
85
  local_zero_copy_grpc_protector_protect,
86
86
  local_zero_copy_grpc_protector_unprotect,
87
- local_zero_copy_grpc_protector_destroy};
87
+ local_zero_copy_grpc_protector_destroy,
88
+ nullptr /* local_zero_copy_grpc_protector_max_frame_size */};
88
89
 
89
90
  tsi_result local_zero_copy_grpc_protector_create(
90
91
  tsi_zero_copy_grpc_protector** protector) {
@@ -104,12 +105,13 @@ tsi_result local_zero_copy_grpc_protector_create(
104
105
  /* --- tsi_handshaker_result methods implementation. --- */
105
106
 
106
107
  static tsi_result handshaker_result_extract_peer(
107
- const tsi_handshaker_result* self, tsi_peer* peer) {
108
+ const tsi_handshaker_result* /*self*/, tsi_peer* /*peer*/) {
108
109
  return TSI_OK;
109
110
  }
110
111
 
111
112
  static tsi_result handshaker_result_create_zero_copy_grpc_protector(
112
- const tsi_handshaker_result* self, size_t* max_output_protected_frame_size,
113
+ const tsi_handshaker_result* self,
114
+ size_t* /*max_output_protected_frame_size*/,
113
115
  tsi_zero_copy_grpc_protector** protector) {
114
116
  if (self == nullptr || protector == nullptr) {
115
117
  gpr_log(GPR_ERROR,
@@ -157,10 +159,10 @@ static tsi_result create_handshaker_result(bool is_client,
157
159
  /* --- tsi_handshaker methods implementation. --- */
158
160
 
159
161
  static tsi_result handshaker_next(
160
- tsi_handshaker* self, const unsigned char* received_bytes,
161
- size_t received_bytes_size, const unsigned char** bytes_to_send,
162
+ tsi_handshaker* self, const unsigned char* /*received_bytes*/,
163
+ size_t /*received_bytes_size*/, const unsigned char** /*bytes_to_send*/,
162
164
  size_t* bytes_to_send_size, tsi_handshaker_result** result,
163
- tsi_handshaker_on_next_done_cb cb, void* user_data) {
165
+ tsi_handshaker_on_next_done_cb /*cb*/, void* /*user_data*/) {
164
166
  if (self == nullptr) {
165
167
  gpr_log(GPR_ERROR, "Invalid arguments to handshaker_next()");
166
168
  return TSI_INVALID_ARGUMENT;
@@ -62,9 +62,7 @@ class SslCachedSession {
62
62
  virtual ~SslCachedSession() = default;
63
63
 
64
64
  /// Returns a copy of previously cached session.
65
- virtual SslSessionPtr CopySession() const GRPC_ABSTRACT;
66
-
67
- GRPC_ABSTRACT_BASE_CLASS
65
+ virtual SslSessionPtr CopySession() const = 0;
68
66
 
69
67
  protected:
70
68
  SslCachedSession() = default;
@@ -49,8 +49,7 @@ class BoringSslCachedSession : public SslCachedSession {
49
49
 
50
50
  grpc_core::UniquePtr<SslCachedSession> SslCachedSession::Create(
51
51
  SslSessionPtr session) {
52
- return grpc_core::UniquePtr<SslCachedSession>(
53
- grpc_core::New<BoringSslCachedSession>(std::move(session)));
52
+ return grpc_core::MakeUnique<BoringSslCachedSession>(std::move(session));
54
53
  }
55
54
 
56
55
  } // namespace tsi
@@ -28,18 +28,20 @@
28
28
 
29
29
  namespace tsi {
30
30
 
31
- static void cache_key_avl_destroy(void* key, void* unused) {}
31
+ static void cache_key_avl_destroy(void* /*key*/, void* /*unused*/) {}
32
32
 
33
- static void* cache_key_avl_copy(void* key, void* unused) { return key; }
33
+ static void* cache_key_avl_copy(void* key, void* /*unused*/) { return key; }
34
34
 
35
- static long cache_key_avl_compare(void* key1, void* key2, void* unused) {
35
+ static long cache_key_avl_compare(void* key1, void* key2, void* /*unused*/) {
36
36
  return grpc_slice_cmp(*static_cast<grpc_slice*>(key1),
37
37
  *static_cast<grpc_slice*>(key2));
38
38
  }
39
39
 
40
- static void cache_value_avl_destroy(void* value, void* unused) {}
40
+ static void cache_value_avl_destroy(void* /*value*/, void* /*unused*/) {}
41
41
 
42
- static void* cache_value_avl_copy(void* value, void* unused) { return value; }
42
+ static void* cache_value_avl_copy(void* value, void* /*unused*/) {
43
+ return value;
44
+ }
43
45
 
44
46
  // AVL only stores pointers, ownership belonges to the linked list.
45
47
  static const grpc_avl_vtable cache_avl_vtable = {
@@ -53,6 +53,10 @@ class SslSessionLRUCache : public grpc_core::RefCounted<SslSessionLRUCache> {
53
53
  return grpc_core::MakeRefCounted<SslSessionLRUCache>(capacity);
54
54
  }
55
55
 
56
+ // Use Create function instead of using this directly.
57
+ explicit SslSessionLRUCache(size_t capacity);
58
+ ~SslSessionLRUCache();
59
+
56
60
  // Not copyable nor movable.
57
61
  SslSessionLRUCache(const SslSessionLRUCache&) = delete;
58
62
  SslSessionLRUCache& operator=(const SslSessionLRUCache&) = delete;
@@ -67,14 +71,8 @@ class SslSessionLRUCache : public grpc_core::RefCounted<SslSessionLRUCache> {
67
71
  SslSessionPtr Get(const char* key);
68
72
 
69
73
  private:
70
- GRPC_ALLOW_CLASS_TO_USE_NON_PUBLIC_NEW
71
- GRPC_ALLOW_CLASS_TO_USE_NON_PUBLIC_DELETE
72
-
73
74
  class Node;
74
75
 
75
- explicit SslSessionLRUCache(size_t capacity);
76
- ~SslSessionLRUCache();
77
-
78
76
  Node* FindLocked(const grpc_slice& key);
79
77
  void Remove(Node* node);
80
78
  void PushFront(Node* node);
@@ -67,8 +67,7 @@ class OpenSslCachedSession : public SslCachedSession {
67
67
 
68
68
  grpc_core::UniquePtr<SslCachedSession> SslCachedSession::Create(
69
69
  SslSessionPtr session) {
70
- return grpc_core::UniquePtr<SslCachedSession>(
71
- grpc_core::New<OpenSslCachedSession>(std::move(session)));
70
+ return grpc_core::MakeUnique<OpenSslCachedSession>(std::move(session));
72
71
  }
73
72
 
74
73
  } // namespace tsi
@@ -550,7 +550,8 @@ static tsi_result ssl_ctx_use_certificate_chain(SSL_CTX* context,
550
550
  break;
551
551
  }
552
552
  /* We don't need to free certificate_authority as its ownership has been
553
- transfered to the context. That is not the case for certificate though.
553
+ transferred to the context. That is not the case for certificate
554
+ though.
554
555
  */
555
556
  }
556
557
  } while (0);
@@ -773,7 +774,7 @@ static tsi_result build_alpn_protocol_name_list(
773
774
  // the server's certificate, but we need to pull it anyway, in case a higher
774
775
  // layer wants to look at it. In this case the verification may fail, but
775
776
  // we don't really care.
776
- static int NullVerifyCallback(int preverify_ok, X509_STORE_CTX* ctx) {
777
+ static int NullVerifyCallback(int /*preverify_ok*/, X509_STORE_CTX* /*ctx*/) {
777
778
  return 1;
778
779
  }
779
780
 
@@ -1264,7 +1265,7 @@ static tsi_result ssl_handshaker_next(
1264
1265
  tsi_handshaker* self, const unsigned char* received_bytes,
1265
1266
  size_t received_bytes_size, const unsigned char** bytes_to_send,
1266
1267
  size_t* bytes_to_send_size, tsi_handshaker_result** handshaker_result,
1267
- tsi_handshaker_on_next_done_cb cb, void* user_data) {
1268
+ tsi_handshaker_on_next_done_cb /*cb*/, void* /*user_data*/) {
1268
1269
  /* Input sanity check. */
1269
1270
  if ((received_bytes_size > 0 && received_bytes == nullptr) ||
1270
1271
  bytes_to_send == nullptr || bytes_to_send_size == nullptr ||
@@ -1464,11 +1465,9 @@ static void tsi_ssl_client_handshaker_factory_destroy(
1464
1465
  gpr_free(self);
1465
1466
  }
1466
1467
 
1467
- static int client_handshaker_factory_npn_callback(SSL* ssl, unsigned char** out,
1468
- unsigned char* outlen,
1469
- const unsigned char* in,
1470
- unsigned int inlen,
1471
- void* arg) {
1468
+ static int client_handshaker_factory_npn_callback(
1469
+ SSL* /*ssl*/, unsigned char** out, unsigned char* outlen,
1470
+ const unsigned char* in, unsigned int inlen, void* arg) {
1472
1471
  tsi_ssl_client_handshaker_factory* factory =
1473
1472
  static_cast<tsi_ssl_client_handshaker_factory*>(arg);
1474
1473
  return select_protocol_list((const unsigned char**)out, outlen,
@@ -1555,7 +1554,8 @@ static int does_entry_match_name(grpc_core::StringView entry,
1555
1554
  return !entry.empty() && name_subdomain == entry;
1556
1555
  }
1557
1556
 
1558
- static int ssl_server_handshaker_factory_servername_callback(SSL* ssl, int* ap,
1557
+ static int ssl_server_handshaker_factory_servername_callback(SSL* ssl,
1558
+ int* /*ap*/,
1559
1559
  void* arg) {
1560
1560
  tsi_ssl_server_handshaker_factory* impl =
1561
1561
  static_cast<tsi_ssl_server_handshaker_factory*>(arg);
@@ -1578,7 +1578,7 @@ static int ssl_server_handshaker_factory_servername_callback(SSL* ssl, int* ap,
1578
1578
 
1579
1579
  #if TSI_OPENSSL_ALPN_SUPPORT
1580
1580
  static int server_handshaker_factory_alpn_callback(
1581
- SSL* ssl, const unsigned char** out, unsigned char* outlen,
1581
+ SSL* /*ssl*/, const unsigned char** out, unsigned char* outlen,
1582
1582
  const unsigned char* in, unsigned int inlen, void* arg) {
1583
1583
  tsi_ssl_server_handshaker_factory* factory =
1584
1584
  static_cast<tsi_ssl_server_handshaker_factory*>(arg);
@@ -1589,7 +1589,7 @@ static int server_handshaker_factory_alpn_callback(
1589
1589
  #endif /* TSI_OPENSSL_ALPN_SUPPORT */
1590
1590
 
1591
1591
  static int server_handshaker_factory_npn_advertised_callback(
1592
- SSL* ssl, const unsigned char** out, unsigned int* outlen, void* arg) {
1592
+ SSL* /*ssl*/, const unsigned char** out, unsigned int* outlen, void* arg) {
1593
1593
  tsi_ssl_server_handshaker_factory* factory =
1594
1594
  static_cast<tsi_ssl_server_handshaker_factory*>(arg);
1595
1595
  *out = factory->alpn_protocol_list;
@@ -1618,7 +1618,7 @@ static int server_handshaker_factory_new_session_callback(
1618
1618
  return 0;
1619
1619
  }
1620
1620
  factory->session_cache->Put(server_name, tsi::SslSessionPtr(session));
1621
- // Return 1 to indicate transfered ownership over the given session.
1621
+ // Return 1 to indicate transferred ownership over the given session.
1622
1622
  return 1;
1623
1623
  }
1624
1624
 
@@ -260,8 +260,8 @@ struct tsi_ssl_server_handshaker_options {
260
260
  specified. If this parameter is 0, the other alpn parameters must be
261
261
  NULL. */
262
262
  uint16_t num_alpn_protocols;
263
- /* session_ticket_key is optional key for encrypting session keys. If paramter
264
- is not specified it must be NULL. */
263
+ /* session_ticket_key is optional key for encrypting session keys. If
264
+ parameter is not specified it must be NULL. */
265
265
  const char* session_ticket_key;
266
266
  /* session_ticket_key_size is a size of session ticket encryption key. */
267
267
  size_t session_ticket_key_size;
@@ -64,3 +64,10 @@ void tsi_zero_copy_grpc_protector_destroy(tsi_zero_copy_grpc_protector* self) {
64
64
  if (self == nullptr) return;
65
65
  self->vtable->destroy(self);
66
66
  }
67
+
68
+ tsi_result tsi_zero_copy_grpc_protector_max_frame_size(
69
+ tsi_zero_copy_grpc_protector* self, size_t& max_frame_size) {
70
+ if (self == nullptr) return TSI_INVALID_ARGUMENT;
71
+ if (self->vtable->max_frame_size == nullptr) return TSI_UNIMPLEMENTED;
72
+ return self->vtable->max_frame_size(self, max_frame_size);
73
+ }
@@ -56,6 +56,10 @@ tsi_result tsi_zero_copy_grpc_protector_unprotect(
56
56
  /* Destroys the tsi_zero_copy_grpc_protector object. */
57
57
  void tsi_zero_copy_grpc_protector_destroy(tsi_zero_copy_grpc_protector* self);
58
58
 
59
+ /* Returns value of max protected frame size. Useful for testing. */
60
+ tsi_result tsi_zero_copy_grpc_protector_max_frame_size(
61
+ tsi_zero_copy_grpc_protector* self, size_t& max_frame_size);
62
+
59
63
  /* Base for tsi_zero_copy_grpc_protector implementations. */
60
64
  typedef struct {
61
65
  tsi_result (*protect)(tsi_zero_copy_grpc_protector* self,
@@ -65,6 +69,8 @@ typedef struct {
65
69
  grpc_slice_buffer* protected_slices,
66
70
  grpc_slice_buffer* unprotected_slices);
67
71
  void (*destroy)(tsi_zero_copy_grpc_protector* self);
72
+ tsi_result (*max_frame_size)(tsi_zero_copy_grpc_protector* self,
73
+ size_t& max_frame_size);
68
74
  } tsi_zero_copy_grpc_protector_vtable;
69
75
 
70
76
  struct tsi_zero_copy_grpc_protector {
@@ -76,6 +76,7 @@ if grpc_config == 'dbg'
76
76
  end
77
77
 
78
78
  $LDFLAGS << ' -Wl,-wrap,memcpy' if RUBY_PLATFORM =~ /linux/
79
+ $LDFLAGS << ' -static-libgcc -static-libstdc++' if RUBY_PLATFORM =~ /linux/
79
80
  $LDFLAGS << ' -static' if windows
80
81
 
81
82
  $CFLAGS << ' -std=c99 '
@@ -170,7 +170,7 @@ static VALUE grpc_rb_call_cancel(VALUE self) {
170
170
  /* TODO: expose this as part of the surface API if needed.
171
171
  * This is meant for internal usage by the "write thread" of grpc-ruby
172
172
  * client-side bidi calls. It provides a way for the background write-thread
173
- * to propogate failures to the main read-thread and give the user an error
173
+ * to propagate failures to the main read-thread and give the user an error
174
174
  * message. */
175
175
  static VALUE grpc_rb_call_cancel_with_status(VALUE self, VALUE status_code,
176
176
  VALUE details) {
@@ -119,7 +119,7 @@ static void grpc_rb_channel_watch_connection_state_op_complete(
119
119
  GPR_ASSERT(!op->op.api_callback_args.called_back);
120
120
  op->op.api_callback_args.called_back = 1;
121
121
  op->op.api_callback_args.success = success;
122
- // wake up the watch API call thats waiting on this op
122
+ // wake up the watch API call that's waiting on this op
123
123
  gpr_cv_broadcast(&global_connection_polling_cv);
124
124
  }
125
125
 
@@ -17,7 +17,7 @@ require_relative '../grpc'
17
17
 
18
18
  # GRPC contains the General RPC module.
19
19
  module GRPC
20
- # The BiDiCall class orchestrates exection of a BiDi stream on a client or
20
+ # The BiDiCall class orchestrates execution of a BiDi stream on a client or
21
21
  # server.
22
22
  class BidiCall
23
23
  include Core::CallOps
@@ -241,7 +241,7 @@ module GRPC
241
241
  # server's current call loop is it's last.
242
242
  def stop
243
243
  # if called via run_till_terminated_or_interrupted,
244
- # signal stop_server_thread and dont do anything
244
+ # signal stop_server_thread and don't do anything
245
245
  if @stop_server.nil? == false && @stop_server == false
246
246
  @stop_server = true
247
247
  @stop_server_cv.broadcast
@@ -14,5 +14,5 @@
14
14
 
15
15
  # GRPC contains the General RPC module.
16
16
  module GRPC
17
- VERSION = '1.24.0'
17
+ VERSION = '1.25.0.pre1'
18
18
  end
@@ -67,7 +67,7 @@ describe 'conversion from a status struct to a google protobuf status' do
67
67
  expect(rpc_status).to eq(proto)
68
68
  end
69
69
 
70
- it 'can succesfully convert a status struct into a google protobuf status '\
70
+ it 'can successfully convert a status struct into a google protobuf status '\
71
71
  'when there are no rpcstatus details' do
72
72
  proto = Google::Rpc::Status.new(code: 1, message: 'matching message')
73
73
  encoded_proto = Google::Rpc::Status.encode(proto)
@@ -79,7 +79,7 @@ describe 'conversion from a status struct to a google protobuf status' do
79
79
  expect(out.details).to eq([])
80
80
  end
81
81
 
82
- it 'can succesfully convert a status struct into a google protobuf '\
82
+ it 'can successfully convert a status struct into a google protobuf '\
83
83
  'status when there are multiple rpcstatus details' do
84
84
  simple_request_any = Google::Protobuf::Any.new
85
85
  simple_request = Grpc::Testing::SimpleRequest.new(
@@ -62,17 +62,30 @@
62
62
  int i2d_ASN1_BOOLEAN(int a, unsigned char **pp)
63
63
  {
64
64
  int r;
65
- unsigned char *p;
65
+ unsigned char *p, *allocated = NULL;
66
66
 
67
67
  r = ASN1_object_size(0, 1, V_ASN1_BOOLEAN);
68
68
  if (pp == NULL)
69
69
  return (r);
70
- p = *pp;
70
+
71
+ if (*pp == NULL) {
72
+ if ((p = allocated = OPENSSL_malloc(r)) == NULL) {
73
+ OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
74
+ return 0;
75
+ }
76
+ } else {
77
+ p = *pp;
78
+ }
71
79
 
72
80
  ASN1_put_object(&p, 0, 1, V_ASN1_BOOLEAN, V_ASN1_UNIVERSAL);
73
- *(p++) = (unsigned char)a;
74
- *pp = p;
75
- return (r);
81
+ *p = (unsigned char)a;
82
+
83
+ /*
84
+ * If a new buffer was allocated, just return it back.
85
+ * If not, return the incremented buffer pointer.
86
+ */
87
+ *pp = allocated != NULL ? allocated : p + 1;
88
+ return r;
76
89
  }
77
90
 
78
91
  int d2i_ASN1_BOOLEAN(int *a, const unsigned char **pp, long length)
@@ -58,240 +58,36 @@
58
58
 
59
59
  #include <limits.h>
60
60
 
61
- #include <openssl/buf.h>
61
+ #include <openssl/bio.h>
62
62
  #include <openssl/err.h>
63
63
  #include <openssl/mem.h>
64
64
 
65
- static int asn1_d2i_read_bio(BIO *in, BUF_MEM **pb);
66
-
67
- #ifndef NO_OLD_ASN1
68
- # ifndef OPENSSL_NO_FP_API
69
-
70
- void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x)
71
- {
72
- BIO *b;
73
- void *ret;
74
-
75
- if ((b = BIO_new(BIO_s_file())) == NULL) {
76
- OPENSSL_PUT_ERROR(ASN1, ERR_R_BUF_LIB);
77
- return (NULL);
78
- }
79
- BIO_set_fp(b, in, BIO_NOCLOSE);
80
- ret = ASN1_d2i_bio(xnew, d2i, b, x);
81
- BIO_free(b);
82
- return (ret);
83
- }
84
- # endif
85
-
86
- void *ASN1_d2i_bio(void *(*xnew) (void), d2i_of_void *d2i, BIO *in, void **x)
87
- {
88
- BUF_MEM *b = NULL;
89
- const unsigned char *p;
90
- void *ret = NULL;
91
- int len;
92
-
93
- len = asn1_d2i_read_bio(in, &b);
94
- if (len < 0)
95
- goto err;
96
-
97
- p = (unsigned char *)b->data;
98
- ret = d2i(x, &p, len);
99
- err:
100
- if (b != NULL)
101
- BUF_MEM_free(b);
102
- return (ret);
103
- }
104
-
105
- #endif
106
65
 
107
66
  void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x)
108
67
  {
109
- BUF_MEM *b = NULL;
110
- const unsigned char *p;
111
- void *ret = NULL;
112
- int len;
113
-
114
- len = asn1_d2i_read_bio(in, &b);
115
- if (len < 0)
116
- goto err;
117
-
118
- p = (const unsigned char *)b->data;
119
- ret = ASN1_item_d2i(x, &p, len, it);
120
- err:
121
- if (b != NULL)
122
- BUF_MEM_free(b);
123
- return (ret);
68
+ uint8_t *data;
69
+ size_t len;
70
+ // Historically, this function did not impose a limit in OpenSSL and is used
71
+ // to read CRLs, so we leave this without an external bound.
72
+ if (!BIO_read_asn1(in, &data, &len, INT_MAX)) {
73
+ return NULL;
74
+ }
75
+ const uint8_t *ptr = data;
76
+ void *ret = ASN1_item_d2i(x, &ptr, len, it);
77
+ OPENSSL_free(data);
78
+ return ret;
124
79
  }
125
80
 
126
81
  #ifndef OPENSSL_NO_FP_API
127
82
  void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x)
128
83
  {
129
- BIO *b;
130
- char *ret;
131
-
132
- if ((b = BIO_new(BIO_s_file())) == NULL) {
84
+ BIO *b = BIO_new_fp(in, BIO_NOCLOSE);
85
+ if (b == NULL) {
133
86
  OPENSSL_PUT_ERROR(ASN1, ERR_R_BUF_LIB);
134
- return (NULL);
87
+ return NULL;
135
88
  }
136
- BIO_set_fp(b, in, BIO_NOCLOSE);
137
- ret = ASN1_item_d2i_bio(it, b, x);
89
+ void *ret = ASN1_item_d2i_bio(it, b, x);
138
90
  BIO_free(b);
139
- return (ret);
91
+ return ret;
140
92
  }
141
93
  #endif
142
-
143
- typedef struct asn1_const_ctx_st
144
- {
145
- const unsigned char *p;/* work char pointer */
146
- int eos; /* end of sequence read for indefinite encoding */
147
- int error; /* error code to use when returning an error */
148
- int inf; /* constructed if 0x20, indefinite is 0x21 */
149
- int tag; /* tag from last 'get object' */
150
- int xclass; /* class from last 'get object' */
151
- long slen; /* length of last 'get object' */
152
- const unsigned char *max; /* largest value of p allowed */
153
- const unsigned char *q;/* temporary variable */
154
- const unsigned char **pp;/* variable */
155
- int line; /* used in error processing */
156
- } ASN1_const_CTX;
157
-
158
- #define HEADER_SIZE 8
159
- #define ASN1_CHUNK_INITIAL_SIZE (16 * 1024)
160
- static int asn1_d2i_read_bio(BIO *in, BUF_MEM **pb)
161
- {
162
- BUF_MEM *b;
163
- unsigned char *p;
164
- int i;
165
- ASN1_const_CTX c;
166
- size_t want = HEADER_SIZE;
167
- int eos = 0;
168
- size_t off = 0;
169
- size_t len = 0;
170
-
171
- b = BUF_MEM_new();
172
- if (b == NULL) {
173
- OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
174
- return -1;
175
- }
176
-
177
- ERR_clear_error();
178
- for (;;) {
179
- if (want >= (len - off)) {
180
- want -= (len - off);
181
-
182
- if (len + want < len || !BUF_MEM_grow_clean(b, len + want)) {
183
- OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
184
- goto err;
185
- }
186
- i = BIO_read(in, &(b->data[len]), want);
187
- if ((i < 0) && ((len - off) == 0)) {
188
- OPENSSL_PUT_ERROR(ASN1, ASN1_R_NOT_ENOUGH_DATA);
189
- goto err;
190
- }
191
- if (i > 0) {
192
- if (len + i < len) {
193
- OPENSSL_PUT_ERROR(ASN1, ASN1_R_TOO_LONG);
194
- goto err;
195
- }
196
- len += i;
197
- }
198
- }
199
- /* else data already loaded */
200
-
201
- p = (unsigned char *)&(b->data[off]);
202
- c.p = p;
203
- c.inf = ASN1_get_object(&(c.p), &(c.slen), &(c.tag), &(c.xclass),
204
- len - off);
205
- if (c.inf & 0x80) {
206
- uint32_t e;
207
-
208
- e = ERR_GET_REASON(ERR_peek_error());
209
- if (e != ASN1_R_TOO_LONG)
210
- goto err;
211
- else
212
- ERR_clear_error(); /* clear error */
213
- }
214
- i = c.p - p; /* header length */
215
- off += i; /* end of data */
216
-
217
- if (c.inf & 1) {
218
- /* no data body so go round again */
219
- eos++;
220
- if (eos < 0) {
221
- OPENSSL_PUT_ERROR(ASN1, ASN1_R_HEADER_TOO_LONG);
222
- goto err;
223
- }
224
- want = HEADER_SIZE;
225
- } else if (eos && (c.slen == 0) && (c.tag == V_ASN1_EOC)) {
226
- /* eos value, so go back and read another header */
227
- eos--;
228
- if (eos <= 0)
229
- break;
230
- else
231
- want = HEADER_SIZE;
232
- } else {
233
- /* suck in c.slen bytes of data */
234
- want = c.slen;
235
- if (want > (len - off)) {
236
- size_t chunk_max = ASN1_CHUNK_INITIAL_SIZE;
237
- want -= (len - off);
238
- if (want > INT_MAX /* BIO_read takes an int length */ ||
239
- len + want < len) {
240
- OPENSSL_PUT_ERROR(ASN1, ASN1_R_TOO_LONG);
241
- goto err;
242
- }
243
- while (want > 0) {
244
- /*
245
- * Read content in chunks of increasing size
246
- * so we can return an error for EOF without
247
- * having to allocate the entire content length
248
- * in one go.
249
- */
250
- size_t chunk = want > chunk_max ? chunk_max : want;
251
-
252
- if (!BUF_MEM_grow_clean(b, len + chunk)) {
253
- OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
254
- goto err;
255
- }
256
- want -= chunk;
257
- while (chunk > 0) {
258
- i = BIO_read(in, &(b->data[len]), chunk);
259
- if (i <= 0) {
260
- OPENSSL_PUT_ERROR(ASN1, ASN1_R_NOT_ENOUGH_DATA);
261
- goto err;
262
- }
263
- /*
264
- * This can't overflow because |len+want| didn't
265
- * overflow.
266
- */
267
- len += i;
268
- chunk -= i;
269
- }
270
- if (chunk_max < INT_MAX/2)
271
- chunk_max *= 2;
272
- }
273
- }
274
- if (off + c.slen < off) {
275
- OPENSSL_PUT_ERROR(ASN1, ASN1_R_TOO_LONG);
276
- goto err;
277
- }
278
- off += c.slen;
279
- if (eos <= 0) {
280
- break;
281
- } else
282
- want = HEADER_SIZE;
283
- }
284
- }
285
-
286
- if (off > INT_MAX) {
287
- OPENSSL_PUT_ERROR(ASN1, ASN1_R_TOO_LONG);
288
- goto err;
289
- }
290
-
291
- *pb = b;
292
- return off;
293
- err:
294
- if (b != NULL)
295
- BUF_MEM_free(b);
296
- return -1;
297
- }