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
@@ -6,7 +6,7 @@
6
6
  * are met:
7
7
  *
8
8
  * 1. Redistributions of source code must retain the above copyright
9
- * notice, this list of conditions and the following disclaimer.
9
+ * notice, this list of conditions and the following disclaimer.
10
10
  *
11
11
  * 2. Redistributions in binary form must reproduce the above copyright
12
12
  * notice, this list of conditions and the following disclaimer in
@@ -65,6 +65,10 @@
65
65
  #include <stdio.h>
66
66
  #endif
67
67
 
68
+ #if defined(__APPLE__)
69
+ #include <TargetConditionals.h>
70
+ #endif
71
+
68
72
  // Include a BoringSSL-only header so consumers including this header without
69
73
  // setting up include paths do not accidentally pick up the system
70
74
  // opensslconf.h.
@@ -120,6 +124,14 @@ extern "C" {
120
124
 
121
125
  #if defined(__APPLE__)
122
126
  #define OPENSSL_APPLE
127
+ // Note |TARGET_OS_MAC| is set for all Apple OS variants. |TARGET_OS_OSX|
128
+ // targets macOS specifically.
129
+ #if defined(TARGET_OS_OSX) && TARGET_OS_OSX
130
+ #define OPENSSL_MACOS
131
+ #endif
132
+ #if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
133
+ #define OPENSSL_IOS
134
+ #endif
123
135
  #endif
124
136
 
125
137
  #if defined(_WIN32)
@@ -136,10 +148,27 @@ extern "C" {
136
148
 
137
149
  #if defined(TRUSTY)
138
150
  #define OPENSSL_TRUSTY
139
- #define OPENSSL_NO_THREADS
151
+ #define OPENSSL_NO_THREADS_CORRUPT_MEMORY_AND_LEAK_SECRETS_IF_THREADED
152
+ #endif
153
+
154
+ #if defined(__ANDROID_API__)
155
+ #define OPENSSL_ANDROID
140
156
  #endif
141
157
 
142
- #if !defined(OPENSSL_NO_THREADS)
158
+ // BoringSSL requires platform's locking APIs to make internal global state
159
+ // thread-safe, including the PRNG. On some single-threaded embedded platforms,
160
+ // locking APIs may not exist, so this dependency may be disabled with the
161
+ // following build flag.
162
+ //
163
+ // IMPORTANT: Doing so means the consumer promises the library will never be
164
+ // used in any multi-threaded context. It causes BoringSSL to be globally
165
+ // thread-unsafe. Setting it inappropriately will subtly and unpredictably
166
+ // corrupt memory and leak secret keys.
167
+ //
168
+ // Do not set this flag on any platform where threads are possible. BoringSSL
169
+ // maintainers will not provide support for any consumers that do so. Changes
170
+ // which break such unsupported configurations will not be reverted.
171
+ #if !defined(OPENSSL_NO_THREADS_CORRUPT_MEMORY_AND_LEAK_SECRETS_IF_THREADED)
143
172
  #define OPENSSL_THREADS
144
173
  #endif
145
174
 
@@ -155,7 +184,7 @@ extern "C" {
155
184
  // A consumer may use this symbol in the preprocessor to temporarily build
156
185
  // against multiple revisions of BoringSSL at the same time. It is not
157
186
  // recommended to do so for longer than is necessary.
158
- #define BORINGSSL_API_VERSION 7
187
+ #define BORINGSSL_API_VERSION 9
159
188
 
160
189
  #if defined(BORINGSSL_SHARED_LIBRARY)
161
190
 
@@ -213,6 +242,35 @@ extern "C" {
213
242
  #define OPENSSL_UNUSED
214
243
  #endif
215
244
 
245
+ // C and C++ handle inline functions differently. In C++, an inline function is
246
+ // defined in just the header file, potentially emitted in multiple compilation
247
+ // units (in cases the compiler did not inline), but each copy must be identical
248
+ // to satsify ODR. In C, a non-static inline must be manually emitted in exactly
249
+ // one compilation unit with a separate extern inline declaration.
250
+ //
251
+ // In both languages, exported inline functions referencing file-local symbols
252
+ // are problematic. C forbids this altogether (though GCC and Clang seem not to
253
+ // enforce it). It works in C++, but ODR requires the definitions be identical,
254
+ // including all names in the definitions resolving to the "same entity". In
255
+ // practice, this is unlikely to be a problem, but an inline function that
256
+ // returns a pointer to a file-local symbol
257
+ // could compile oddly.
258
+ //
259
+ // Historically, we used static inline in headers. However, to satisfy ODR, use
260
+ // plain inline in C++, to allow inline consumer functions to call our header
261
+ // functions. Plain inline would also work better with C99 inline, but that is
262
+ // not used much in practice, extern inline is tedious, and there are conflicts
263
+ // with the old gnu89 model:
264
+ // https://stackoverflow.com/questions/216510/extern-inline
265
+ #if defined(__cplusplus)
266
+ #define OPENSSL_INLINE inline
267
+ #else
268
+ // Add OPENSSL_UNUSED so that, should an inline function be emitted via macro
269
+ // (e.g. a |STACK_OF(T)| implementation) in a source file without tripping
270
+ // clang's -Wunused-function.
271
+ #define OPENSSL_INLINE static inline OPENSSL_UNUSED
272
+ #endif
273
+
216
274
  #if defined(BORINGSSL_UNSAFE_FUZZER_MODE) && \
217
275
  !defined(BORINGSSL_UNSAFE_DETERMINISTIC_MODE)
218
276
  #define BORINGSSL_UNSAFE_DETERMINISTIC_MODE
@@ -222,9 +280,38 @@ extern "C" {
222
280
  #if __has_feature(address_sanitizer)
223
281
  #define OPENSSL_ASAN
224
282
  #endif
283
+ #if __has_feature(thread_sanitizer)
284
+ #define OPENSSL_TSAN
285
+ #endif
225
286
  #if __has_feature(memory_sanitizer)
226
287
  #define OPENSSL_MSAN
288
+ #define OPENSSL_ASM_INCOMPATIBLE
289
+ #endif
290
+ #endif
291
+
292
+ #if defined(OPENSSL_ASM_INCOMPATIBLE)
293
+ #undef OPENSSL_ASM_INCOMPATIBLE
294
+ #if !defined(OPENSSL_NO_ASM)
295
+ #define OPENSSL_NO_ASM
227
296
  #endif
297
+ #endif // OPENSSL_ASM_INCOMPATIBLE
298
+
299
+ #if defined(__cplusplus)
300
+ // enums can be predeclared, but only in C++ and only if given an explicit type.
301
+ // C doesn't support setting an explicit type for enums thus a #define is used
302
+ // to do this only for C++. However, the ABI type between C and C++ need to have
303
+ // equal sizes, which is confirmed in a unittest.
304
+ #define BORINGSSL_ENUM_INT : int
305
+ enum ssl_early_data_reason_t BORINGSSL_ENUM_INT;
306
+ enum ssl_encryption_level_t BORINGSSL_ENUM_INT;
307
+ enum ssl_private_key_result_t BORINGSSL_ENUM_INT;
308
+ enum ssl_renegotiate_mode_t BORINGSSL_ENUM_INT;
309
+ enum ssl_select_cert_result_t BORINGSSL_ENUM_INT;
310
+ enum ssl_select_cert_result_t BORINGSSL_ENUM_INT;
311
+ enum ssl_ticket_aead_result_t BORINGSSL_ENUM_INT;
312
+ enum ssl_verify_result_t BORINGSSL_ENUM_INT;
313
+ #else
314
+ #define BORINGSSL_ENUM_INT
228
315
  #endif
229
316
 
230
317
  // CRYPTO_THREADID is a dummy value.
@@ -330,6 +417,7 @@ typedef struct ssl_cipher_st SSL_CIPHER;
330
417
  typedef struct ssl_ctx_st SSL_CTX;
331
418
  typedef struct ssl_method_st SSL_METHOD;
332
419
  typedef struct ssl_private_key_method_st SSL_PRIVATE_KEY_METHOD;
420
+ typedef struct ssl_quic_method_st SSL_QUIC_METHOD;
333
421
  typedef struct ssl_session_st SSL_SESSION;
334
422
  typedef struct ssl_st SSL;
335
423
  typedef struct ssl_ticket_aead_method_st SSL_TICKET_AEAD_METHOD;
@@ -355,6 +443,18 @@ typedef void *OPENSSL_BLOCK;
355
443
  #define BORINGSSL_NO_CXX
356
444
  #endif
357
445
 
446
+ #if defined(BORINGSSL_PREFIX)
447
+ #define BSSL_NAMESPACE_BEGIN \
448
+ namespace bssl { \
449
+ inline namespace BORINGSSL_PREFIX {
450
+ #define BSSL_NAMESPACE_END \
451
+ } \
452
+ }
453
+ #else
454
+ #define BSSL_NAMESPACE_BEGIN namespace bssl {
455
+ #define BSSL_NAMESPACE_END }
456
+ #endif
457
+
358
458
  // MSVC doesn't set __cplusplus to 201103 to indicate C++11 support (see
359
459
  // https://connect.microsoft.com/VisualStudio/feedback/details/763051/a-value-of-predefined-macro-cplusplus-is-still-199711l)
360
460
  // so MSVC is just assumed to support C++11.
@@ -363,6 +463,7 @@ typedef void *OPENSSL_BLOCK;
363
463
  #endif
364
464
 
365
465
  #if !defined(BORINGSSL_NO_CXX)
466
+
366
467
  extern "C++" {
367
468
 
368
469
  #include <memory>
@@ -378,12 +479,13 @@ extern "C++" {
378
479
  #if defined(BORINGSSL_NO_CXX)
379
480
 
380
481
  #define BORINGSSL_MAKE_DELETER(type, deleter)
482
+ #define BORINGSSL_MAKE_UP_REF(type, up_ref_func)
381
483
 
382
484
  #else
383
485
 
384
486
  extern "C++" {
385
487
 
386
- namespace bssl {
488
+ BSSL_NAMESPACE_BEGIN
387
489
 
388
490
  namespace internal {
389
491
 
@@ -448,7 +550,19 @@ class StackAllocated {
448
550
  template <typename T>
449
551
  using UniquePtr = std::unique_ptr<T, internal::Deleter<T>>;
450
552
 
451
- } // namespace bssl
553
+ #define BORINGSSL_MAKE_UP_REF(type, up_ref_func) \
554
+ inline UniquePtr<type> UpRef(type *v) { \
555
+ if (v != nullptr) { \
556
+ up_ref_func(v); \
557
+ } \
558
+ return UniquePtr<type>(v); \
559
+ } \
560
+ \
561
+ inline UniquePtr<type> UpRef(const UniquePtr<type> &ptr) { \
562
+ return UpRef(ptr.get()); \
563
+ }
564
+
565
+ BSSL_NAMESPACE_END
452
566
 
453
567
  } // extern C++
454
568
 
@@ -67,7 +67,10 @@ extern "C" {
67
67
  // base64 functions.
68
68
  //
69
69
  // For historical reasons, these functions have the EVP_ prefix but just do
70
- // base64 encoding and decoding.
70
+ // base64 encoding and decoding. Note that BoringSSL is a cryptography library,
71
+ // so these functions are implemented with side channel protections, at a
72
+ // performance cost. For other base64 uses, use a general-purpose base64
73
+ // implementation.
71
74
 
72
75
 
73
76
  // Encoding
@@ -117,10 +117,14 @@ OPENSSL_EXPORT int BIO_read(BIO *bio, void *data, int len);
117
117
  // return a line for this call, remove the warning above.
118
118
  OPENSSL_EXPORT int BIO_gets(BIO *bio, char *buf, int size);
119
119
 
120
- // BIO_write writes |len| bytes from |data| to BIO. It returns the number of
120
+ // BIO_write writes |len| bytes from |data| to |bio|. It returns the number of
121
121
  // bytes written or a negative number on error.
122
122
  OPENSSL_EXPORT int BIO_write(BIO *bio, const void *data, int len);
123
123
 
124
+ // BIO_write_all writes |len| bytes from |data| to |bio|, looping as necessary.
125
+ // It returns one if all bytes were successfully written and zero on error.
126
+ OPENSSL_EXPORT int BIO_write_all(BIO *bio, const void *data, size_t len);
127
+
124
128
  // BIO_puts writes a NUL terminated string from |buf| to |bio|. It returns the
125
129
  // number of bytes written or a negative number on error.
126
130
  OPENSSL_EXPORT int BIO_puts(BIO *bio, const char *buf);
@@ -677,26 +681,49 @@ OPENSSL_EXPORT void BIO_set_init(BIO *bio, int init);
677
681
  OPENSSL_EXPORT int BIO_get_init(BIO *bio);
678
682
 
679
683
  // These are values of the |cmd| argument to |BIO_ctrl|.
680
- #define BIO_CTRL_RESET 1 // opt - rewind/zero etc
681
- #define BIO_CTRL_EOF 2 // opt - are we at the eof
682
- #define BIO_CTRL_INFO 3 // opt - extra tit-bits
683
- #define BIO_CTRL_SET 4 // man - set the 'IO' type
684
- #define BIO_CTRL_GET 5 // man - get the 'IO' type
685
- #define BIO_CTRL_PUSH 6
686
- #define BIO_CTRL_POP 7
687
- #define BIO_CTRL_GET_CLOSE 8 // man - set the 'close' on free
688
- #define BIO_CTRL_SET_CLOSE 9 // man - set the 'close' on free
689
- #define BIO_CTRL_PENDING 10 // opt - is their more data buffered
690
- #define BIO_CTRL_FLUSH 11 // opt - 'flush' buffered output
691
- #define BIO_CTRL_WPENDING 13 // opt - number of bytes still to write
692
- // callback is int cb(BIO *bio,state,ret);
693
- #define BIO_CTRL_SET_CALLBACK 14 // opt - set callback function
694
- #define BIO_CTRL_GET_CALLBACK 15 // opt - set callback function
695
- #define BIO_CTRL_SET_FILENAME 30 // BIO_s_file special
696
-
697
- // BIO_CTRL_DUP is never used, but exists to allow code to compile more
698
- // easily.
699
- #define BIO_CTRL_DUP 12
684
+
685
+ // BIO_CTRL_RESET implements |BIO_reset|. The arguments are unused.
686
+ #define BIO_CTRL_RESET 1
687
+
688
+ // BIO_CTRL_EOF implements |BIO_eof|. The arguments are unused.
689
+ #define BIO_CTRL_EOF 2
690
+
691
+ // BIO_CTRL_INFO is a legacy command that returns information specific to the
692
+ // type of |BIO|. It is not safe to call generically and should not be
693
+ // implemented in new |BIO| types.
694
+ #define BIO_CTRL_INFO 3
695
+
696
+ // BIO_CTRL_GET_CLOSE returns the close flag set by |BIO_CTRL_SET_CLOSE|. The
697
+ // arguments are unused.
698
+ #define BIO_CTRL_GET_CLOSE 8
699
+
700
+ // BIO_CTRL_SET_CLOSE implements |BIO_set_close|. The |larg| argument is the
701
+ // close flag.
702
+ #define BIO_CTRL_SET_CLOSE 9
703
+
704
+ // BIO_CTRL_PENDING implements |BIO_pending|. The arguments are unused.
705
+ #define BIO_CTRL_PENDING 10
706
+
707
+ // BIO_CTRL_FLUSH implements |BIO_flush|. The arguments are unused.
708
+ #define BIO_CTRL_FLUSH 11
709
+
710
+ // BIO_CTRL_WPENDING implements |BIO_wpending|. The arguments are unused.
711
+ #define BIO_CTRL_WPENDING 13
712
+
713
+ // BIO_CTRL_SET_CALLBACK sets an informational callback of type
714
+ // int cb(BIO *bio, int state, int ret)
715
+ #define BIO_CTRL_SET_CALLBACK 14
716
+
717
+ // BIO_CTRL_GET_CALLBACK returns the callback set by |BIO_CTRL_SET_CALLBACK|.
718
+ #define BIO_CTRL_GET_CALLBACK 15
719
+
720
+ // The following are never used, but are defined to aid porting existing code.
721
+ #define BIO_CTRL_SET 4
722
+ #define BIO_CTRL_GET 5
723
+ #define BIO_CTRL_PUSH 6
724
+ #define BIO_CTRL_POP 7
725
+ #define BIO_CTRL_DUP 12
726
+ #define BIO_CTRL_SET_FILENAME 30
700
727
 
701
728
 
702
729
  // Deprecated functions.
@@ -706,6 +733,8 @@ OPENSSL_EXPORT int BIO_get_init(BIO *bio);
706
733
  // |BIO_flush| when done writing, to signal that no more data are to be
707
734
  // encoded. The flag |BIO_FLAGS_BASE64_NO_NL| may be set to encode all the data
708
735
  // on one line.
736
+ //
737
+ // Use |EVP_EncodeBlock| and |EVP_DecodeBase64| instead.
709
738
  OPENSSL_EXPORT const BIO_METHOD *BIO_f_base64(void);
710
739
 
711
740
  OPENSSL_EXPORT void BIO_set_retry_special(BIO *bio);
@@ -733,8 +762,8 @@ OPENSSL_EXPORT int BIO_meth_set_puts(BIO_METHOD *method,
733
762
  #define BIO_FLAGS_RWS (BIO_FLAGS_READ | BIO_FLAGS_WRITE | BIO_FLAGS_IO_SPECIAL)
734
763
  #define BIO_FLAGS_SHOULD_RETRY 0x08
735
764
  #define BIO_FLAGS_BASE64_NO_NL 0x100
736
- // This is used with memory BIOs: it means we shouldn't free up or change the
737
- // data in any way.
765
+ // BIO_FLAGS_MEM_RDONLY is used with memory BIOs. It means we shouldn't free up
766
+ // or change the data in any way.
738
767
  #define BIO_FLAGS_MEM_RDONLY 0x200
739
768
 
740
769
  // These are the 'types' of BIOs
@@ -762,7 +791,7 @@ OPENSSL_EXPORT int BIO_meth_set_puts(BIO_METHOD *method,
762
791
  #define BIO_TYPE_ASN1 (22 | 0x0200) // filter
763
792
  #define BIO_TYPE_COMP (23 | 0x0200) // filter
764
793
 
765
- // |BIO_TYPE_DESCRIPTOR| denotes that the |BIO| responds to the |BIO_C_SET_FD|
794
+ // BIO_TYPE_DESCRIPTOR denotes that the |BIO| responds to the |BIO_C_SET_FD|
766
795
  // (|BIO_set_fd|) and |BIO_C_GET_FD| (|BIO_get_fd|) control hooks.
767
796
  #define BIO_TYPE_DESCRIPTOR 0x0100 // socket, fd, connect or accept
768
797
  #define BIO_TYPE_FILTER 0x0200
@@ -809,61 +838,61 @@ struct bio_st {
809
838
  size_t num_read, num_write;
810
839
  };
811
840
 
812
- #define BIO_C_SET_CONNECT 100
813
- #define BIO_C_DO_STATE_MACHINE 101
814
- #define BIO_C_SET_NBIO 102
815
- #define BIO_C_SET_PROXY_PARAM 103
816
- #define BIO_C_SET_FD 104
817
- #define BIO_C_GET_FD 105
818
- #define BIO_C_SET_FILE_PTR 106
819
- #define BIO_C_GET_FILE_PTR 107
820
- #define BIO_C_SET_FILENAME 108
821
- #define BIO_C_SET_SSL 109
822
- #define BIO_C_GET_SSL 110
823
- #define BIO_C_SET_MD 111
824
- #define BIO_C_GET_MD 112
825
- #define BIO_C_GET_CIPHER_STATUS 113
826
- #define BIO_C_SET_BUF_MEM 114
827
- #define BIO_C_GET_BUF_MEM_PTR 115
828
- #define BIO_C_GET_BUFF_NUM_LINES 116
829
- #define BIO_C_SET_BUFF_SIZE 117
830
- #define BIO_C_SET_ACCEPT 118
831
- #define BIO_C_SSL_MODE 119
832
- #define BIO_C_GET_MD_CTX 120
833
- #define BIO_C_GET_PROXY_PARAM 121
834
- #define BIO_C_SET_BUFF_READ_DATA 122 // data to read first
835
- #define BIO_C_GET_ACCEPT 124
836
- #define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125
837
- #define BIO_C_GET_SSL_NUM_RENEGOTIATES 126
838
- #define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127
839
- #define BIO_C_FILE_SEEK 128
840
- #define BIO_C_GET_CIPHER_CTX 129
841
- #define BIO_C_SET_BUF_MEM_EOF_RETURN 130 //return end of input value
842
- #define BIO_C_SET_BIND_MODE 131
843
- #define BIO_C_GET_BIND_MODE 132
844
- #define BIO_C_FILE_TELL 133
845
- #define BIO_C_GET_SOCKS 134
846
- #define BIO_C_SET_SOCKS 135
847
-
848
- #define BIO_C_SET_WRITE_BUF_SIZE 136 // for BIO_s_bio
849
- #define BIO_C_GET_WRITE_BUF_SIZE 137
850
- #define BIO_C_GET_WRITE_GUARANTEE 140
851
- #define BIO_C_GET_READ_REQUEST 141
852
- #define BIO_C_SHUTDOWN_WR 142
853
- #define BIO_C_NREAD0 143
854
- #define BIO_C_NREAD 144
855
- #define BIO_C_NWRITE0 145
856
- #define BIO_C_NWRITE 146
857
- #define BIO_C_RESET_READ_REQUEST 147
858
- #define BIO_C_SET_MD_CTX 148
859
-
860
- #define BIO_C_SET_PREFIX 149
861
- #define BIO_C_GET_PREFIX 150
862
- #define BIO_C_SET_SUFFIX 151
863
- #define BIO_C_GET_SUFFIX 152
864
-
865
- #define BIO_C_SET_EX_ARG 153
866
- #define BIO_C_GET_EX_ARG 154
841
+ #define BIO_C_SET_CONNECT 100
842
+ #define BIO_C_DO_STATE_MACHINE 101
843
+ #define BIO_C_SET_NBIO 102
844
+ #define BIO_C_SET_PROXY_PARAM 103
845
+ #define BIO_C_SET_FD 104
846
+ #define BIO_C_GET_FD 105
847
+ #define BIO_C_SET_FILE_PTR 106
848
+ #define BIO_C_GET_FILE_PTR 107
849
+ #define BIO_C_SET_FILENAME 108
850
+ #define BIO_C_SET_SSL 109
851
+ #define BIO_C_GET_SSL 110
852
+ #define BIO_C_SET_MD 111
853
+ #define BIO_C_GET_MD 112
854
+ #define BIO_C_GET_CIPHER_STATUS 113
855
+ #define BIO_C_SET_BUF_MEM 114
856
+ #define BIO_C_GET_BUF_MEM_PTR 115
857
+ #define BIO_C_GET_BUFF_NUM_LINES 116
858
+ #define BIO_C_SET_BUFF_SIZE 117
859
+ #define BIO_C_SET_ACCEPT 118
860
+ #define BIO_C_SSL_MODE 119
861
+ #define BIO_C_GET_MD_CTX 120
862
+ #define BIO_C_GET_PROXY_PARAM 121
863
+ #define BIO_C_SET_BUFF_READ_DATA 122 // data to read first
864
+ #define BIO_C_GET_ACCEPT 124
865
+ #define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125
866
+ #define BIO_C_GET_SSL_NUM_RENEGOTIATES 126
867
+ #define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127
868
+ #define BIO_C_FILE_SEEK 128
869
+ #define BIO_C_GET_CIPHER_CTX 129
870
+ #define BIO_C_SET_BUF_MEM_EOF_RETURN 130 // return end of input value
871
+ #define BIO_C_SET_BIND_MODE 131
872
+ #define BIO_C_GET_BIND_MODE 132
873
+ #define BIO_C_FILE_TELL 133
874
+ #define BIO_C_GET_SOCKS 134
875
+ #define BIO_C_SET_SOCKS 135
876
+
877
+ #define BIO_C_SET_WRITE_BUF_SIZE 136 // for BIO_s_bio
878
+ #define BIO_C_GET_WRITE_BUF_SIZE 137
879
+ #define BIO_C_GET_WRITE_GUARANTEE 140
880
+ #define BIO_C_GET_READ_REQUEST 141
881
+ #define BIO_C_SHUTDOWN_WR 142
882
+ #define BIO_C_NREAD0 143
883
+ #define BIO_C_NREAD 144
884
+ #define BIO_C_NWRITE0 145
885
+ #define BIO_C_NWRITE 146
886
+ #define BIO_C_RESET_READ_REQUEST 147
887
+ #define BIO_C_SET_MD_CTX 148
888
+
889
+ #define BIO_C_SET_PREFIX 149
890
+ #define BIO_C_GET_PREFIX 150
891
+ #define BIO_C_SET_SUFFIX 151
892
+ #define BIO_C_GET_SUFFIX 152
893
+
894
+ #define BIO_C_SET_EX_ARG 153
895
+ #define BIO_C_GET_EX_ARG 154
867
896
 
868
897
 
869
898
  #if defined(__cplusplus)
@@ -871,11 +900,13 @@ struct bio_st {
871
900
 
872
901
  extern "C++" {
873
902
 
874
- namespace bssl {
903
+ BSSL_NAMESPACE_BEGIN
875
904
 
876
905
  BORINGSSL_MAKE_DELETER(BIO, BIO_free)
906
+ BORINGSSL_MAKE_UP_REF(BIO, BIO_up_ref)
907
+ BORINGSSL_MAKE_DELETER(BIO_METHOD, BIO_meth_free)
877
908
 
878
- } // namespace bssl
909
+ BSSL_NAMESPACE_END
879
910
 
880
911
  } // extern C++
881
912