grpc 1.27.0.pre1 → 1.30.1

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 (972) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +8023 -11437
  3. data/include/grpc/grpc.h +2 -2
  4. data/include/grpc/grpc_security.h +30 -9
  5. data/include/grpc/grpc_security_constants.h +1 -0
  6. data/include/grpc/impl/codegen/grpc_types.h +24 -21
  7. data/include/grpc/impl/codegen/port_platform.h +13 -2
  8. data/include/grpc/impl/codegen/sync.h +5 -3
  9. data/include/grpc/impl/codegen/sync_abseil.h +36 -0
  10. data/include/grpc/module.modulemap +25 -37
  11. data/include/grpc/support/sync_abseil.h +26 -0
  12. data/src/core/ext/filters/client_channel/backend_metric.cc +7 -4
  13. data/src/core/ext/filters/client_channel/client_channel.cc +282 -249
  14. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +31 -47
  15. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -3
  16. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
  17. data/src/core/ext/filters/client_channel/health/health_check_client.cc +7 -22
  18. data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
  19. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  20. data/src/core/ext/filters/client_channel/http_proxy.cc +21 -11
  21. data/src/core/ext/filters/client_channel/lb_policy.cc +19 -18
  22. data/src/core/ext/filters/client_channel/lb_policy.h +42 -33
  23. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
  24. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
  25. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +297 -0
  26. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +83 -0
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +271 -465
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +8 -7
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
  30. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +18 -21
  31. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
  32. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -14
  33. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +5 -4
  34. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +148 -98
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -2
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +834 -0
  40. data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -3
  41. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +49 -77
  42. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  43. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
  44. data/src/core/ext/filters/client_channel/parse_address.cc +22 -21
  45. data/src/core/ext/filters/client_channel/resolver.cc +5 -8
  46. data/src/core/ext/filters/client_channel/resolver.h +12 -14
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +120 -132
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +35 -35
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -7
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +17 -21
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +5 -5
  52. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +72 -117
  53. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +167 -121
  54. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +3 -2
  55. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +3 -2
  56. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +42 -45
  57. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +94 -103
  58. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +0 -4
  59. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
  60. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +61 -10
  61. data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
  62. data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -3
  63. data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
  64. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +242 -300
  65. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +21 -18
  66. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +56 -206
  67. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +11 -14
  68. data/src/core/ext/filters/client_channel/server_address.h +3 -2
  69. data/src/core/ext/filters/client_channel/service_config.cc +144 -253
  70. data/src/core/ext/filters/client_channel/service_config.h +32 -109
  71. data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
  72. data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
  73. data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
  74. data/src/core/ext/filters/client_channel/subchannel.cc +54 -24
  75. data/src/core/ext/filters/client_channel/subchannel.h +35 -11
  76. data/src/core/ext/filters/client_channel/xds/xds_api.cc +1381 -301
  77. data/src/core/ext/filters/client_channel/xds/xds_api.h +211 -152
  78. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +214 -359
  79. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +28 -44
  80. data/src/core/ext/filters/client_channel/xds/xds_channel.h +3 -1
  81. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +16 -11
  82. data/src/core/ext/filters/client_channel/xds/xds_client.cc +1118 -472
  83. data/src/core/ext/filters/client_channel/xds/xds_client.h +116 -45
  84. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +59 -135
  85. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +122 -137
  86. data/src/core/ext/filters/http/client/http_client_filter.cc +23 -28
  87. data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
  88. data/src/core/ext/filters/http/http_filters_plugin.cc +27 -12
  89. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
  90. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +358 -0
  91. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +29 -0
  92. data/src/core/ext/filters/message_size/message_size_filter.cc +38 -44
  93. data/src/core/ext/filters/message_size/message_size_filter.h +5 -5
  94. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +7 -10
  95. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
  96. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +26 -27
  97. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
  98. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  99. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
  100. data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
  101. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
  102. data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
  103. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
  104. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +29 -16
  105. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
  106. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
  107. data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
  108. data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
  109. data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
  110. data/src/core/ext/transport/chttp2/transport/internal.h +14 -21
  111. data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
  112. data/src/core/ext/transport/chttp2/transport/writing.cc +16 -9
  113. data/src/core/ext/transport/inproc/inproc_transport.cc +41 -42
  114. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +17 -0
  115. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +30 -0
  116. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +27 -0
  117. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +54 -0
  118. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +5 -205
  119. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +5 -788
  120. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
  121. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +418 -0
  122. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
  123. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +197 -0
  124. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
  125. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +378 -0
  126. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +5 -362
  127. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +14 -1337
  128. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +403 -0
  129. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +1447 -0
  130. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +30 -8
  131. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +60 -0
  132. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +2 -0
  133. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +2 -0
  134. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +7 -4
  135. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +6 -2
  136. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
  137. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +78 -0
  138. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +87 -23
  139. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +262 -62
  140. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +20 -15
  141. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +46 -32
  142. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
  143. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +72 -0
  144. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +27 -4
  145. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +70 -0
  146. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +46 -25
  147. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +98 -25
  148. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +2 -0
  149. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +77 -21
  150. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +201 -4
  151. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
  152. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +89 -0
  153. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +2 -0
  154. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +8 -68
  155. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +14 -201
  156. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +92 -0
  157. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +240 -0
  158. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +2 -71
  159. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +3 -228
  160. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +91 -0
  161. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +266 -0
  162. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +2 -0
  163. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +31 -0
  164. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +53 -0
  165. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +109 -0
  166. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +399 -0
  167. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +18 -0
  168. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +33 -0
  169. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +145 -0
  170. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +527 -0
  171. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +43 -0
  172. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +112 -0
  173. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +30 -0
  174. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +53 -0
  175. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +63 -0
  176. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +199 -0
  177. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +18 -0
  178. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +33 -0
  179. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +815 -0
  180. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +3032 -0
  181. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +59 -0
  182. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +134 -0
  183. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +28 -0
  184. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +53 -0
  185. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +228 -0
  186. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +725 -0
  187. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +316 -0
  188. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +1132 -0
  189. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +33 -0
  190. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +65 -0
  191. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
  192. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
  193. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +1 -0
  194. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +4 -2
  195. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +4 -0
  196. data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
  197. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +63 -0
  198. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +144 -0
  199. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +53 -0
  200. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +133 -0
  201. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +88 -0
  202. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +258 -0
  203. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
  204. data/src/core/ext/upb-generated/envoy/type/range.upb.c +12 -0
  205. data/src/core/ext/upb-generated/envoy/type/range.upb.h +27 -0
  206. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +29 -0
  207. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +62 -0
  208. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +89 -0
  209. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +249 -0
  210. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +9 -8
  211. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +30 -24
  212. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +30 -27
  213. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +64 -52
  214. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +48 -0
  215. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +104 -0
  216. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +17 -0
  217. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +30 -0
  218. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
  219. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +65 -0
  220. data/src/core/ext/upb-generated/validate/validate.upb.c +44 -39
  221. data/src/core/ext/upb-generated/validate/validate.upb.h +155 -119
  222. data/src/core/lib/channel/channel_args.cc +15 -14
  223. data/src/core/lib/channel/channel_args.h +3 -1
  224. data/src/core/lib/channel/channel_stack.h +20 -13
  225. data/src/core/lib/channel/channel_trace.cc +32 -41
  226. data/src/core/lib/channel/channel_trace.h +3 -3
  227. data/src/core/lib/channel/channelz.cc +163 -254
  228. data/src/core/lib/channel/channelz.h +15 -17
  229. data/src/core/lib/channel/channelz_registry.cc +52 -77
  230. data/src/core/lib/channel/channelz_registry.h +4 -4
  231. data/src/core/lib/channel/connected_channel.cc +7 -5
  232. data/src/core/lib/channel/context.h +1 -1
  233. data/src/core/lib/channel/handshaker.cc +11 -13
  234. data/src/core/lib/channel/handshaker.h +4 -2
  235. data/src/core/lib/channel/handshaker_registry.cc +5 -17
  236. data/src/core/lib/channel/status_util.cc +2 -3
  237. data/src/core/lib/compression/message_compress.cc +5 -1
  238. data/src/core/lib/debug/stats.cc +21 -27
  239. data/src/core/lib/debug/stats.h +3 -1
  240. data/src/core/lib/gpr/spinlock.h +2 -3
  241. data/src/core/lib/gpr/string.cc +2 -26
  242. data/src/core/lib/gpr/string.h +0 -16
  243. data/src/core/lib/gpr/sync_abseil.cc +116 -0
  244. data/src/core/lib/gpr/sync_posix.cc +8 -5
  245. data/src/core/lib/gpr/sync_windows.cc +4 -2
  246. data/src/core/lib/gpr/time.cc +4 -0
  247. data/src/core/lib/gpr/time_posix.cc +1 -1
  248. data/src/core/lib/gprpp/atomic.h +6 -6
  249. data/src/core/lib/gprpp/fork.cc +1 -1
  250. data/src/core/lib/gprpp/host_port.cc +30 -36
  251. data/src/core/lib/gprpp/host_port.h +14 -17
  252. data/src/core/lib/gprpp/map.h +5 -11
  253. data/src/core/lib/gprpp/memory.h +2 -6
  254. data/src/core/lib/gprpp/ref_counted_ptr.h +5 -0
  255. data/src/core/lib/gprpp/sync.h +9 -0
  256. data/src/core/lib/http/format_request.cc +46 -65
  257. data/src/core/lib/http/httpcli.cc +2 -3
  258. data/src/core/lib/http/httpcli.h +2 -3
  259. data/src/core/lib/http/httpcli_security_connector.cc +5 -5
  260. data/src/core/lib/http/parser.h +2 -3
  261. data/src/core/lib/iomgr/buffer_list.cc +36 -35
  262. data/src/core/lib/iomgr/buffer_list.h +22 -21
  263. data/src/core/lib/iomgr/call_combiner.h +3 -2
  264. data/src/core/lib/iomgr/cfstream_handle.cc +3 -2
  265. data/src/core/lib/iomgr/closure.h +2 -3
  266. data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
  267. data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -3
  268. data/src/core/lib/iomgr/endpoint_pair.h +2 -3
  269. data/src/core/lib/iomgr/error.cc +6 -9
  270. data/src/core/lib/iomgr/error.h +4 -5
  271. data/src/core/lib/iomgr/ev_apple.cc +356 -0
  272. data/src/core/lib/iomgr/ev_apple.h +43 -0
  273. data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -23
  274. data/src/core/lib/iomgr/ev_epollex_linux.cc +14 -7
  275. data/src/core/lib/iomgr/ev_poll_posix.cc +3 -3
  276. data/src/core/lib/iomgr/ev_posix.cc +2 -3
  277. data/src/core/lib/iomgr/exec_ctx.h +14 -2
  278. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
  279. data/src/core/lib/iomgr/load_file.cc +1 -0
  280. data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
  281. data/src/core/lib/iomgr/pollset_uv.h +32 -0
  282. data/src/core/lib/iomgr/port.h +1 -0
  283. data/src/core/lib/iomgr/python_util.h +46 -0
  284. data/src/core/lib/iomgr/resolve_address.h +4 -6
  285. data/src/core/lib/iomgr/resolve_address_custom.cc +29 -39
  286. data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
  287. data/src/core/lib/iomgr/resolve_address_posix.cc +10 -11
  288. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -17
  289. data/src/core/lib/iomgr/resource_quota.cc +4 -6
  290. data/src/core/lib/iomgr/sockaddr_utils.cc +23 -29
  291. data/src/core/lib/iomgr/sockaddr_utils.h +9 -14
  292. data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
  293. data/src/core/lib/iomgr/socket_mutator.h +2 -3
  294. data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -26
  295. data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
  296. data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -7
  297. data/src/core/lib/iomgr/tcp_client_posix.cc +25 -22
  298. data/src/core/lib/iomgr/tcp_client_posix.h +6 -6
  299. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
  300. data/src/core/lib/iomgr/tcp_custom.cc +2 -3
  301. data/src/core/lib/iomgr/tcp_posix.cc +2 -1
  302. data/src/core/lib/iomgr/tcp_server_custom.cc +5 -9
  303. data/src/core/lib/iomgr/tcp_server_posix.cc +5 -4
  304. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -4
  305. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -11
  306. data/src/core/lib/iomgr/tcp_uv.cc +3 -2
  307. data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
  308. data/src/core/lib/iomgr/timer_generic.cc +2 -3
  309. data/src/core/lib/iomgr/timer_generic.h +39 -0
  310. data/src/core/lib/iomgr/timer_heap.h +2 -3
  311. data/src/core/lib/iomgr/udp_server.cc +9 -14
  312. data/src/core/lib/iomgr/work_serializer.cc +155 -0
  313. data/src/core/lib/iomgr/work_serializer.h +65 -0
  314. data/src/core/lib/json/json.h +210 -79
  315. data/src/core/lib/json/json_reader.cc +469 -455
  316. data/src/core/lib/json/json_writer.cc +174 -169
  317. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  318. data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
  319. data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
  320. data/src/core/lib/security/credentials/credentials.cc +0 -84
  321. data/src/core/lib/security/credentials/credentials.h +8 -59
  322. data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
  323. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -12
  324. data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
  325. data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
  326. data/src/core/lib/security/credentials/jwt/json_token.cc +26 -56
  327. data/src/core/lib/security/credentials/jwt/json_token.h +4 -6
  328. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -18
  329. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
  330. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +151 -168
  331. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -6
  332. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +91 -60
  333. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +10 -4
  334. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +13 -0
  335. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
  336. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -13
  337. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +40 -12
  338. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +21 -6
  339. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -7
  340. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
  341. data/src/core/lib/security/security_connector/local/local_security_connector.cc +6 -8
  342. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  343. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +20 -37
  344. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -6
  345. data/src/core/lib/security/security_connector/ssl_utils.cc +62 -13
  346. data/src/core/lib/security/security_connector/ssl_utils.h +12 -11
  347. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +101 -52
  348. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +32 -6
  349. data/src/core/lib/security/transport/auth_filters.h +0 -5
  350. data/src/core/lib/security/transport/client_auth_filter.cc +1 -2
  351. data/src/core/lib/security/transport/security_handshaker.cc +2 -2
  352. data/src/core/lib/security/util/json_util.cc +22 -15
  353. data/src/core/lib/security/util/json_util.h +2 -2
  354. data/src/core/lib/slice/slice_intern.cc +2 -3
  355. data/src/core/lib/slice/slice_internal.h +14 -0
  356. data/src/core/lib/slice/slice_utils.h +9 -0
  357. data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
  358. data/src/core/lib/surface/call.cc +2 -3
  359. data/src/core/lib/surface/call_log_batch.cc +50 -58
  360. data/src/core/lib/surface/channel.cc +53 -31
  361. data/src/core/lib/surface/channel.h +35 -4
  362. data/src/core/lib/surface/channel_ping.cc +2 -3
  363. data/src/core/lib/surface/completion_queue.cc +33 -33
  364. data/src/core/lib/surface/event_string.cc +18 -25
  365. data/src/core/lib/surface/event_string.h +3 -1
  366. data/src/core/lib/surface/init_secure.cc +1 -4
  367. data/src/core/lib/surface/server.cc +570 -369
  368. data/src/core/lib/surface/server.h +32 -0
  369. data/src/core/lib/surface/version.cc +2 -2
  370. data/src/core/lib/transport/byte_stream.h +7 -2
  371. data/src/core/lib/transport/connectivity_state.cc +7 -6
  372. data/src/core/lib/transport/connectivity_state.h +5 -3
  373. data/src/core/lib/transport/metadata.cc +3 -3
  374. data/src/core/lib/transport/metadata_batch.h +2 -3
  375. data/src/core/lib/transport/static_metadata.h +1 -1
  376. data/src/core/lib/transport/status_conversion.cc +6 -14
  377. data/src/core/lib/transport/transport.cc +2 -3
  378. data/src/core/lib/transport/transport.h +3 -2
  379. data/src/core/lib/transport/transport_op_string.cc +61 -102
  380. data/src/core/lib/uri/uri_parser.h +2 -3
  381. data/src/core/plugin_registry/grpc_plugin_registry.cc +20 -4
  382. data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
  383. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +9 -2
  384. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
  385. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +33 -3
  386. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
  387. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
  388. data/src/core/tsi/fake_transport_security.cc +10 -15
  389. data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
  390. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  391. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +0 -2
  392. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -1
  393. data/src/core/tsi/ssl_transport_security.cc +54 -40
  394. data/src/core/tsi/ssl_transport_security.h +8 -8
  395. data/src/core/tsi/ssl_types.h +0 -2
  396. data/src/core/tsi/transport_security.h +6 -9
  397. data/src/core/tsi/transport_security_grpc.h +2 -3
  398. data/src/core/tsi/transport_security_interface.h +3 -3
  399. data/src/ruby/ext/grpc/rb_call.c +9 -1
  400. data/src/ruby/ext/grpc/rb_call_credentials.c +3 -2
  401. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
  402. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
  403. data/src/ruby/lib/grpc/errors.rb +103 -42
  404. data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
  405. data/src/ruby/lib/grpc/generic/interceptors.rb +4 -4
  406. data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
  407. data/src/ruby/lib/grpc/generic/service.rb +5 -4
  408. data/src/ruby/lib/grpc/structs.rb +1 -1
  409. data/src/ruby/lib/grpc/version.rb +1 -1
  410. data/src/ruby/pb/generate_proto_ruby.sh +5 -3
  411. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +11 -0
  412. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
  413. data/src/ruby/spec/debug_message_spec.rb +134 -0
  414. data/src/ruby/spec/generic/service_spec.rb +2 -0
  415. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +5 -0
  416. data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -0
  417. data/src/ruby/spec/support/services.rb +10 -4
  418. data/src/ruby/spec/testdata/ca.pem +18 -13
  419. data/src/ruby/spec/testdata/client.key +26 -14
  420. data/src/ruby/spec/testdata/client.pem +18 -12
  421. data/src/ruby/spec/testdata/server1.key +26 -14
  422. data/src/ruby/spec/testdata/server1.pem +20 -14
  423. data/third_party/abseil-cpp/absl/base/attributes.h +13 -1
  424. data/third_party/abseil-cpp/absl/base/config.h +55 -6
  425. data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +30 -9
  426. data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
  427. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +9 -6
  428. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +5 -1
  429. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +2 -2
  430. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -3
  431. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +3 -3
  432. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +15 -13
  433. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +12 -0
  434. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +9 -0
  435. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +37 -0
  436. data/third_party/abseil-cpp/absl/base/options.h +9 -12
  437. data/third_party/abseil-cpp/absl/numeric/int128.cc +2 -2
  438. data/third_party/abseil-cpp/absl/numeric/int128.h +1 -1
  439. data/third_party/abseil-cpp/absl/strings/ascii.cc +3 -3
  440. data/third_party/abseil-cpp/absl/strings/ascii.h +4 -3
  441. data/third_party/abseil-cpp/absl/strings/charconv.cc +0 -1
  442. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +2 -2
  443. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +4 -2
  444. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +388 -0
  445. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +432 -0
  446. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +245 -0
  447. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +209 -0
  448. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +326 -0
  449. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +51 -0
  450. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +415 -0
  451. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +493 -0
  452. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +23 -0
  453. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
  454. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +104 -0
  455. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +334 -0
  456. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +333 -0
  457. data/third_party/abseil-cpp/absl/strings/numbers.cc +54 -5
  458. data/third_party/abseil-cpp/absl/strings/numbers.h +6 -3
  459. data/third_party/abseil-cpp/absl/strings/str_format.h +537 -0
  460. data/third_party/abseil-cpp/absl/strings/string_view.h +31 -24
  461. data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
  462. data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
  463. data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
  464. data/third_party/abseil-cpp/absl/time/clock.h +74 -0
  465. data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
  466. data/third_party/abseil-cpp/absl/time/format.cc +153 -0
  467. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
  468. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
  469. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
  470. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
  471. data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
  472. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
  473. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
  474. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
  475. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
  476. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
  477. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
  478. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
  479. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
  480. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
  481. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
  482. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
  483. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
  484. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
  485. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
  486. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
  487. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
  488. data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
  489. data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
  490. data/third_party/abseil-cpp/absl/time/time.cc +499 -0
  491. data/third_party/abseil-cpp/absl/time/time.h +1584 -0
  492. data/{src/boringssl → third_party/boringssl-with-bazel}/err_data.c +329 -297
  493. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bitstr.c +0 -0
  494. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bool.c +0 -0
  495. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_d2i_fp.c +0 -0
  496. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_dup.c +0 -0
  497. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_enum.c +0 -0
  498. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_gentm.c +0 -0
  499. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_i2d_fp.c +0 -0
  500. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_int.c +0 -0
  501. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_mbstr.c +0 -0
  502. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_object.c +0 -0
  503. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_octet.c +0 -0
  504. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_print.c +0 -0
  505. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_strnid.c +0 -0
  506. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_time.c +3 -4
  507. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_type.c +0 -0
  508. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utctm.c +0 -0
  509. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utf8.c +0 -0
  510. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_lib.c +0 -0
  511. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_locl.h +0 -0
  512. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_par.c +0 -0
  513. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn_pack.c +0 -0
  514. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_enum.c +0 -0
  515. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_int.c +0 -0
  516. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_string.c +0 -0
  517. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_dec.c +0 -0
  518. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_enc.c +0 -0
  519. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_fre.c +0 -0
  520. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_new.c +0 -0
  521. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_typ.c +0 -0
  522. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_utl.c +0 -0
  523. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/time_support.c +0 -0
  524. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/base64/base64.c +0 -0
  525. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio.c +0 -0
  526. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio_mem.c +0 -0
  527. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/connect.c +3 -4
  528. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/fd.c +0 -1
  529. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/file.c +5 -6
  530. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/hexdump.c +0 -0
  531. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/internal.h +0 -0
  532. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/pair.c +0 -1
  533. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/printf.c +0 -0
  534. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket.c +0 -0
  535. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket_helper.c +0 -0
  536. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/bn_asn1.c +0 -0
  537. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/convert.c +0 -0
  538. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/buf/buf.c +10 -69
  539. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/asn1_compat.c +0 -0
  540. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/ber.c +0 -0
  541. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbb.c +41 -2
  542. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbs.c +60 -3
  543. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/internal.h +0 -0
  544. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/unicode.c +0 -0
  545. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/chacha.c +0 -0
  546. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/internal.h +0 -0
  547. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/cipher_extra.c +0 -0
  548. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/derive_key.c +1 -1
  549. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesccm.c +0 -0
  550. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesctrhmac.c +0 -0
  551. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesgcmsiv.c +8 -0
  552. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_chacha20poly1305.c +0 -0
  553. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_null.c +0 -0
  554. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc2.c +0 -0
  555. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc4.c +0 -0
  556. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_tls.c +0 -0
  557. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/internal.h +0 -0
  558. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/tls_cbc.c +0 -0
  559. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cmac/cmac.c +0 -0
  560. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf.c +0 -0
  561. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf_def.h +0 -0
  562. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/internal.h +0 -0
  563. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-fuchsia.c +0 -0
  564. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-linux.c +0 -0
  565. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.c +7 -6
  566. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.h +0 -0
  567. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm.c +0 -0
  568. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-intel.c +13 -4
  569. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-ppc64le.c +0 -0
  570. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/crypto.c +11 -0
  571. data/third_party/{boringssl/third_party/fiat → boringssl-with-bazel/src/crypto/curve25519}/curve25519.c +18 -26
  572. data/third_party/{boringssl/third_party/fiat → boringssl-with-bazel/src/crypto/curve25519}/curve25519_tables.h +13 -21
  573. data/third_party/{boringssl/third_party/fiat → boringssl-with-bazel/src/crypto/curve25519}/internal.h +14 -22
  574. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/curve25519/spake25519.c +1 -1
  575. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/check.c +3 -3
  576. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh.c +16 -2
  577. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh_asn1.c +0 -0
  578. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/params.c +0 -0
  579. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/digest_extra/digest_extra.c +0 -0
  580. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa.c +10 -0
  581. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa_asn1.c +0 -0
  582. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_asn1.c +0 -0
  583. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_derive.c +2 -3
  584. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +425 -0
  585. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +78 -0
  586. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdh_extra/ecdh_extra.c +2 -2
  587. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdsa_extra/ecdsa_asn1.c +0 -0
  588. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/engine/engine.c +0 -0
  589. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/err.c +39 -38
  590. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/internal.h +0 -0
  591. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/digestsign.c +0 -0
  592. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp.c +0 -0
  593. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_asn1.c +0 -0
  594. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_ctx.c +0 -0
  595. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/internal.h +0 -0
  596. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_dsa_asn1.c +0 -0
  597. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec.c +0 -1
  598. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec_asn1.c +0 -0
  599. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519.c +0 -0
  600. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519_asn1.c +0 -0
  601. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa.c +14 -2
  602. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa_asn1.c +0 -0
  603. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519.c +0 -0
  604. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519_asn1.c +1 -2
  605. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/pbkdf.c +0 -0
  606. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/print.c +0 -0
  607. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/scrypt.c +0 -0
  608. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/sign.c +0 -0
  609. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ex_data.c +0 -0
  610. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +108 -0
  611. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1282 -0
  612. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/internal.h +5 -7
  613. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/key_wrap.c +0 -0
  614. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/mode_wrappers.c +0 -2
  615. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bcm.c +4 -1
  616. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/add.c +0 -0
  617. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -0
  618. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bn.c +0 -0
  619. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bytes.c +0 -0
  620. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/cmp.c +0 -0
  621. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/ctx.c +0 -0
  622. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div.c +0 -0
  623. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div_extra.c +0 -0
  624. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/exponentiation.c +3 -3
  625. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd.c +0 -0
  626. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd_extra.c +0 -0
  627. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/generic.c +0 -0
  628. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/internal.h +14 -11
  629. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/jacobi.c +0 -0
  630. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery.c +8 -8
  631. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery_inv.c +0 -0
  632. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/mul.c +30 -154
  633. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/prime.c +11 -12
  634. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/random.c +0 -0
  635. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.c +0 -0
  636. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.h +0 -0
  637. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/shift.c +0 -0
  638. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/sqrt.c +0 -0
  639. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/aead.c +0 -0
  640. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/cipher.c +0 -0
  641. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_aes.c +3 -5
  642. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_des.c +0 -0
  643. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/internal.h +0 -0
  644. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/delocate.h +0 -0
  645. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/des.c +0 -0
  646. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/internal.h +0 -0
  647. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digest.c +0 -0
  648. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digests.c +16 -0
  649. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/internal.h +0 -0
  650. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/md32_common.h +0 -0
  651. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec.c +289 -117
  652. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_key.c +14 -28
  653. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
  654. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/felem.c +25 -7
  655. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/internal.h +432 -160
  656. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/oct.c +63 -71
  657. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p224-64.c +5 -14
  658. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9497 -0
  659. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.c +80 -99
  660. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.h +0 -0
  661. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +736 -0
  662. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
  663. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +175 -0
  664. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/simple.c +125 -148
  665. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +270 -0
  666. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/util.c +0 -0
  667. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/wnaf.c +61 -18
  668. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdh/ecdh.c +2 -2
  669. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
  670. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/fips_shared_support.c +0 -0
  671. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/hmac/hmac.c +0 -0
  672. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/is_fips.c +0 -0
  673. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md4/md4.c +0 -0
  674. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/internal.h +0 -0
  675. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/md5.c +0 -0
  676. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cbc.c +0 -0
  677. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cfb.c +0 -0
  678. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ctr.c +0 -0
  679. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/gcm.c +45 -193
  680. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +304 -0
  681. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/internal.h +8 -18
  682. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ofb.c +0 -0
  683. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/polyval.c +0 -0
  684. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/ctrdrbg.c +0 -0
  685. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
  686. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
  687. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
  688. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/internal.h +41 -5
  689. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/rand.c +32 -17
  690. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/urandom.c +24 -114
  691. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/blinding.c +4 -0
  692. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/internal.h +1 -0
  693. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/padding.c +0 -0
  694. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa.c +58 -39
  695. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa_impl.c +72 -49
  696. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/self_check/self_check.c +0 -0
  697. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/internal.h +0 -0
  698. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1-altivec.c +0 -0
  699. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1.c +0 -0
  700. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha256.c +0 -0
  701. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha512.c +44 -35
  702. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/internal.h +0 -0
  703. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/kdf.c +0 -0
  704. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hkdf/hkdf.c +0 -0
  705. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/hrss.c +210 -311
  706. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/internal.h +0 -1
  707. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/internal.h +21 -1
  708. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/lhash/lhash.c +0 -0
  709. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/mem.c +99 -12
  710. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj.c +16 -21
  711. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_dat.h +41 -6
  712. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_xref.c +0 -0
  713. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_all.c +0 -0
  714. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_info.c +0 -1
  715. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_lib.c +7 -7
  716. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_oth.c +0 -1
  717. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pk8.c +0 -1
  718. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pkey.c +0 -1
  719. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_x509.c +0 -0
  720. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_xaux.c +0 -0
  721. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/internal.h +0 -0
  722. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7.c +0 -0
  723. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7_x509.c +1 -1
  724. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/internal.h +0 -0
  725. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/p5_pbev2.c +0 -0
  726. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8.c +0 -0
  727. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8_x509.c +0 -0
  728. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/internal.h +0 -0
  729. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305.c +2 -2
  730. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_arm.c +21 -20
  731. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_vec.c +34 -17
  732. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/internal.h +0 -0
  733. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/pool.c +1 -2
  734. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/deterministic.c +6 -10
  735. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/forkunsafe.c +0 -0
  736. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/fuchsia.c +0 -0
  737. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/rand_extra.c +0 -0
  738. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/windows.c +16 -0
  739. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rc4/rc4.c +0 -0
  740. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_c11.c +0 -0
  741. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_lock.c +0 -0
  742. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_asn1.c +0 -0
  743. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_print.c +0 -0
  744. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/siphash/siphash.c +3 -1
  745. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/stack/stack.c +0 -0
  746. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread.c +0 -0
  747. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_none.c +0 -0
  748. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_pthread.c +4 -0
  749. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_win.c +4 -0
  750. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +278 -0
  751. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1474 -0
  752. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +720 -0
  753. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_digest.c +0 -0
  754. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_sign.c +0 -0
  755. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_strex.c +0 -0
  756. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_verify.c +0 -1
  757. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/algorithm.c +0 -0
  758. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/asn1_gen.c +0 -0
  759. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_dir.c +1 -1
  760. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_file.c +0 -1
  761. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/charmap.h +0 -0
  762. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/i2d_pr.c +0 -0
  763. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/internal.h +0 -0
  764. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/rsa_pss.c +0 -0
  765. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_crl.c +0 -0
  766. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_req.c +0 -0
  767. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509.c +0 -0
  768. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509a.c +0 -0
  769. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/vpm_int.h +0 -0
  770. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509.c +0 -0
  771. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_att.c +0 -0
  772. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_cmp.c +0 -1
  773. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_d2.c +0 -0
  774. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_def.c +0 -0
  775. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_ext.c +0 -0
  776. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_lu.c +0 -0
  777. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_obj.c +1 -1
  778. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_r2x.c +0 -1
  779. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_req.c +0 -1
  780. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_set.c +16 -0
  781. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_trs.c +1 -2
  782. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_txt.c +0 -0
  783. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_v3.c +0 -0
  784. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vfy.c +5 -1
  785. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vpm.c +3 -4
  786. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509cset.c +0 -0
  787. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509name.c +4 -3
  788. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509rset.c +0 -0
  789. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509spki.c +0 -0
  790. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_algor.c +0 -0
  791. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_all.c +0 -1
  792. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_attrib.c +0 -0
  793. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_crl.c +0 -0
  794. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_exten.c +0 -0
  795. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_info.c +0 -0
  796. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_name.c +0 -0
  797. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pkey.c +0 -0
  798. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pubkey.c +0 -0
  799. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_req.c +0 -0
  800. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_sig.c +0 -0
  801. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_spki.c +0 -0
  802. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_val.c +0 -0
  803. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509.c +0 -0
  804. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509a.c +0 -0
  805. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/ext_dat.h +0 -0
  806. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/internal.h +0 -0
  807. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_cache.c +0 -0
  808. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_data.c +0 -0
  809. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_int.h +0 -0
  810. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_lib.c +0 -0
  811. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_map.c +0 -0
  812. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_node.c +0 -0
  813. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_tree.c +0 -0
  814. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akey.c +0 -0
  815. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akeya.c +0 -0
  816. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_alt.c +3 -3
  817. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bcons.c +0 -0
  818. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bitst.c +0 -0
  819. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_conf.c +0 -0
  820. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_cpols.c +0 -0
  821. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_crld.c +0 -0
  822. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_enum.c +2 -2
  823. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_extku.c +0 -0
  824. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_genn.c +0 -0
  825. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ia5.c +0 -0
  826. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_info.c +4 -5
  827. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_int.c +0 -0
  828. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_lib.c +0 -0
  829. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ncons.c +0 -0
  830. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ocsp.c +0 -0
  831. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pci.c +0 -0
  832. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcia.c +0 -0
  833. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcons.c +0 -0
  834. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pku.c +0 -0
  835. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pmaps.c +0 -0
  836. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_prn.c +0 -0
  837. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_purp.c +2 -3
  838. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_skey.c +0 -0
  839. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_sxnet.c +0 -0
  840. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_utl.c +11 -12
  841. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aead.h +0 -0
  842. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aes.h +0 -0
  843. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/arm_arch.h +0 -0
  844. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1.h +0 -0
  845. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1_mac.h +0 -0
  846. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1t.h +0 -0
  847. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base.h +5 -1
  848. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base64.h +0 -0
  849. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bio.h +0 -0
  850. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/blowfish.h +0 -0
  851. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bn.h +32 -20
  852. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buf.h +9 -9
  853. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buffer.h +0 -0
  854. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bytestring.h +34 -0
  855. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cast.h +0 -0
  856. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/chacha.h +0 -0
  857. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cipher.h +0 -0
  858. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cmac.h +0 -0
  859. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/conf.h +0 -0
  860. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cpu.h +0 -0
  861. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/crypto.h +9 -4
  862. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/curve25519.h +0 -0
  863. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/des.h +0 -0
  864. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dh.h +20 -0
  865. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/digest.h +1 -0
  866. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dsa.h +16 -0
  867. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dtls1.h +0 -0
  868. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/e_os2.h +0 -0
  869. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec.h +11 -4
  870. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec_key.h +4 -2
  871. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdh.h +0 -0
  872. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdsa.h +6 -0
  873. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/engine.h +0 -0
  874. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/err.h +13 -9
  875. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/evp.h +20 -0
  876. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ex_data.h +0 -0
  877. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hkdf.h +0 -0
  878. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hmac.h +0 -0
  879. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hrss.h +0 -0
  880. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/is_boringssl.h +0 -0
  881. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/lhash.h +0 -0
  882. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md4.h +0 -0
  883. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md5.h +0 -0
  884. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/mem.h +17 -2
  885. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/nid.h +14 -0
  886. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj.h +0 -0
  887. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj_mac.h +0 -0
  888. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/objects.h +0 -0
  889. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslconf.h +0 -0
  890. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslv.h +0 -0
  891. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ossl_typ.h +0 -0
  892. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pem.h +0 -0
  893. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs12.h +0 -0
  894. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs7.h +0 -0
  895. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs8.h +0 -0
  896. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/poly1305.h +5 -7
  897. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pool.h +0 -0
  898. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rand.h +3 -17
  899. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rc4.h +0 -0
  900. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ripemd.h +0 -0
  901. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rsa.h +31 -0
  902. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/safestack.h +0 -0
  903. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/sha.h +26 -0
  904. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/siphash.h +0 -0
  905. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/span.h +0 -0
  906. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/srtp.h +0 -0
  907. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl.h +182 -97
  908. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl3.h +0 -0
  909. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/stack.h +0 -0
  910. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/thread.h +0 -0
  911. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/tls1.h +1 -3
  912. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +291 -0
  913. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/type_check.h +0 -0
  914. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509.h +5 -3
  915. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509_vfy.h +1 -0
  916. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509v3.h +0 -0
  917. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/bio_ssl.cc +0 -0
  918. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_both.cc +0 -5
  919. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_lib.cc +3 -3
  920. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_pkt.cc +0 -1
  921. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_srtp.cc +0 -0
  922. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_method.cc +13 -5
  923. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_record.cc +0 -0
  924. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handoff.cc +237 -51
  925. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake.cc +19 -7
  926. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_client.cc +51 -32
  927. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_server.cc +12 -8
  928. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/internal.h +94 -71
  929. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_both.cc +10 -10
  930. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_lib.cc +4 -5
  931. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_pkt.cc +21 -22
  932. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_aead_ctx.cc +0 -0
  933. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_asn1.cc +30 -2
  934. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_buffer.cc +34 -15
  935. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cert.cc +4 -1
  936. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cipher.cc +0 -1
  937. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_file.cc +0 -0
  938. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_key_share.cc +0 -0
  939. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_lib.cc +19 -15
  940. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_privkey.cc +13 -2
  941. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_session.cc +66 -6
  942. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_stat.cc +6 -0
  943. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_transcript.cc +0 -0
  944. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_versions.cc +1 -1
  945. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_x509.cc +0 -0
  946. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_enc.cc +6 -2
  947. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_lib.cc +53 -219
  948. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_both.cc +1 -1
  949. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_client.cc +101 -31
  950. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_enc.cc +28 -76
  951. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_server.cc +111 -104
  952. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_method.cc +64 -26
  953. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_record.cc +7 -2
  954. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_32.h +245 -175
  955. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_64.h +135 -75
  956. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3147 -0
  957. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256_64.h +512 -503
  958. metadata +648 -503
  959. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1917
  960. data/src/core/lib/gprpp/inlined_vector.h +0 -246
  961. data/src/core/lib/gprpp/optional.h +0 -74
  962. data/src/core/lib/gprpp/string_view.h +0 -169
  963. data/src/core/lib/iomgr/logical_thread.cc +0 -103
  964. data/src/core/lib/iomgr/logical_thread.h +0 -52
  965. data/src/core/lib/json/json.cc +0 -94
  966. data/src/core/tsi/grpc_shadow_boringssl.h +0 -3297
  967. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +0 -860
  968. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +0 -9501
  969. data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +0 -96
  970. data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +0 -84
  971. data/third_party/boringssl/third_party/fiat/p256.c +0 -1063
  972. data/third_party/boringssl/third_party/fiat/p256_32.h +0 -3226
@@ -356,7 +356,7 @@ bool tls13_process_certificate_verify(SSL_HANDSHAKE *hs, const SSLMessage &msg)
356
356
  }
357
357
 
358
358
  uint8_t alert = SSL_AD_DECODE_ERROR;
359
- if (!tls12_check_peer_sigalg(ssl, &alert, signature_algorithm)) {
359
+ if (!tls12_check_peer_sigalg(hs, &alert, signature_algorithm)) {
360
360
  ssl_send_alert(ssl, SSL3_AL_FATAL, alert);
361
361
  return false;
362
362
  }
@@ -52,6 +52,54 @@ enum client_hs_state_t {
52
52
 
53
53
  static const uint8_t kZeroes[EVP_MAX_MD_SIZE] = {0};
54
54
 
55
+ // end_of_early_data closes the early data stream for |hs| and switches the
56
+ // encryption level to |level|. It returns true on success and false on error.
57
+ static bool close_early_data(SSL_HANDSHAKE *hs, ssl_encryption_level_t level) {
58
+ SSL *const ssl = hs->ssl;
59
+ assert(hs->in_early_data);
60
+
61
+ // Note |can_early_write| may already be false if |SSL_write| exceeded the
62
+ // early data write limit.
63
+ hs->can_early_write = false;
64
+
65
+ // 0-RTT write states on the client differ between TLS 1.3, DTLS 1.3, and
66
+ // QUIC. TLS 1.3 has one write encryption level at a time. 0-RTT write keys
67
+ // overwrite the null cipher and defer handshake write keys. While a
68
+ // HelloRetryRequest can cause us to rewind back to the null cipher, sequence
69
+ // numbers have no effect, so we can install a "new" null cipher.
70
+ //
71
+ // In QUIC and DTLS 1.3, 0-RTT write state cannot override or defer the normal
72
+ // write state. The two ClientHello sequence numbers must align, and handshake
73
+ // write keys must be installed early to ACK the EncryptedExtensions.
74
+ //
75
+ // We do not currently implement DTLS 1.3 and, in QUIC, the caller handles
76
+ // 0-RTT data, so we can skip installing 0-RTT keys and act as if there is one
77
+ // write level. If we implement DTLS 1.3, we'll need to model this better.
78
+ if (ssl->quic_method == nullptr) {
79
+ if (level == ssl_encryption_initial) {
80
+ bssl::UniquePtr<SSLAEADContext> null_ctx =
81
+ SSLAEADContext::CreateNullCipher(SSL_is_dtls(ssl));
82
+ if (!null_ctx ||
83
+ !ssl->method->set_write_state(ssl, ssl_encryption_initial,
84
+ std::move(null_ctx),
85
+ /*secret_for_quic=*/{})) {
86
+ return false;
87
+ }
88
+ ssl->s3->aead_write_ctx->SetVersionIfNullCipher(ssl->version);
89
+ } else {
90
+ assert(level == ssl_encryption_handshake);
91
+ if (!tls13_set_traffic_key(ssl, ssl_encryption_handshake, evp_aead_seal,
92
+ hs->new_session.get(),
93
+ hs->client_handshake_secret())) {
94
+ return false;
95
+ }
96
+ }
97
+ }
98
+
99
+ assert(ssl->s3->write_level == level);
100
+ return true;
101
+ }
102
+
55
103
  static enum ssl_hs_wait_t do_read_hello_retry_request(SSL_HANDSHAKE *hs) {
56
104
  SSL *const ssl = hs->ssl;
57
105
  assert(ssl->s3->have_version);
@@ -183,28 +231,30 @@ static enum ssl_hs_wait_t do_read_hello_retry_request(SSL_HANDSHAKE *hs) {
183
231
  return ssl_hs_error;
184
232
  }
185
233
 
234
+ // HelloRetryRequest should be the end of the flight.
235
+ if (ssl->method->has_unprocessed_handshake_data(ssl)) {
236
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE);
237
+ OPENSSL_PUT_ERROR(SSL, SSL_R_EXCESS_HANDSHAKE_DATA);
238
+ return ssl_hs_error;
239
+ }
240
+
186
241
  ssl->method->next_message(ssl);
187
- hs->received_hello_retry_request = true;
242
+ ssl->s3->used_hello_retry_request = true;
188
243
  hs->tls13_state = state_send_second_client_hello;
189
244
  // 0-RTT is rejected if we receive a HelloRetryRequest.
190
245
  if (hs->in_early_data) {
191
246
  ssl->s3->early_data_reason = ssl_early_data_hello_retry_request;
247
+ if (!close_early_data(hs, ssl_encryption_initial)) {
248
+ return ssl_hs_error;
249
+ }
192
250
  return ssl_hs_early_data_rejected;
193
251
  }
194
252
  return ssl_hs_ok;
195
253
  }
196
254
 
197
255
  static enum ssl_hs_wait_t do_send_second_client_hello(SSL_HANDSHAKE *hs) {
198
- SSL *const ssl = hs->ssl;
199
- // Restore the null cipher. We may have switched due to 0-RTT.
200
- bssl::UniquePtr<SSLAEADContext> null_ctx =
201
- SSLAEADContext::CreateNullCipher(SSL_is_dtls(ssl));
202
- if (!null_ctx ||
203
- !ssl->method->set_write_state(ssl, std::move(null_ctx))) {
204
- return ssl_hs_error;
205
- }
206
-
207
- ssl->s3->aead_write_ctx->SetVersionIfNullCipher(ssl->version);
256
+ // Any 0-RTT keys must have been discarded.
257
+ assert(hs->ssl->s3->write_level == ssl_encryption_initial);
208
258
 
209
259
  if (!ssl_write_client_hello(hs)) {
210
260
  return ssl_hs_error;
@@ -269,8 +319,7 @@ static enum ssl_hs_wait_t do_read_server_hello(SSL_HANDSHAKE *hs) {
269
319
  }
270
320
 
271
321
  // Check that the cipher matches the one in the HelloRetryRequest.
272
- if (hs->received_hello_retry_request &&
273
- hs->new_cipher != cipher) {
322
+ if (ssl->s3->used_hello_retry_request && hs->new_cipher != cipher) {
274
323
  OPENSSL_PUT_ERROR(SSL, SSL_R_WRONG_CIPHER_RETURNED);
275
324
  ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_ILLEGAL_PARAMETER);
276
325
  return ssl_hs_error;
@@ -392,21 +441,28 @@ static enum ssl_hs_wait_t do_read_server_hello(SSL_HANDSHAKE *hs) {
392
441
 
393
442
  if (!tls13_advance_key_schedule(hs, dhe_secret) ||
394
443
  !ssl_hash_message(hs, msg) ||
395
- !tls13_derive_handshake_secrets(hs) ||
396
- !tls13_set_traffic_key(ssl, ssl_encryption_handshake, evp_aead_open,
397
- hs->server_handshake_secret())) {
444
+ !tls13_derive_handshake_secrets(hs)) {
398
445
  return ssl_hs_error;
399
446
  }
400
447
 
401
- if (!hs->early_data_offered) {
402
- // If not sending early data, set client traffic keys now so that alerts are
403
- // encrypted.
448
+ // If currently sending early data over TCP, we defer installing client
449
+ // traffic keys to when the early data stream is closed. See
450
+ // |close_early_data|. Note if the server has already rejected 0-RTT via
451
+ // HelloRetryRequest, |in_early_data| is already false.
452
+ if (!hs->in_early_data || ssl->quic_method != nullptr) {
404
453
  if (!tls13_set_traffic_key(ssl, ssl_encryption_handshake, evp_aead_seal,
454
+ hs->new_session.get(),
405
455
  hs->client_handshake_secret())) {
406
456
  return ssl_hs_error;
407
457
  }
408
458
  }
409
459
 
460
+ if (!tls13_set_traffic_key(ssl, ssl_encryption_handshake, evp_aead_open,
461
+ hs->new_session.get(),
462
+ hs->server_handshake_secret())) {
463
+ return ssl_hs_error;
464
+ }
465
+
410
466
  ssl->method->next_message(ssl);
411
467
  hs->tls13_state = state_read_encrypted_extensions;
412
468
  return ssl_hs_ok;
@@ -440,14 +496,20 @@ static enum ssl_hs_wait_t do_read_encrypted_extensions(SSL_HANDSHAKE *hs) {
440
496
  }
441
497
 
442
498
  if (ssl->s3->early_data_accepted) {
443
- if (hs->early_session->cipher != hs->new_session->cipher ||
444
- MakeConstSpan(hs->early_session->early_alpn) !=
445
- ssl->s3->alpn_selected) {
499
+ if (hs->early_session->cipher != hs->new_session->cipher) {
500
+ OPENSSL_PUT_ERROR(SSL, SSL_R_CIPHER_MISMATCH_ON_EARLY_DATA);
501
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_ILLEGAL_PARAMETER);
502
+ return ssl_hs_error;
503
+ }
504
+ if (MakeConstSpan(hs->early_session->early_alpn) !=
505
+ ssl->s3->alpn_selected) {
446
506
  OPENSSL_PUT_ERROR(SSL, SSL_R_ALPN_MISMATCH_ON_EARLY_DATA);
507
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_ILLEGAL_PARAMETER);
447
508
  return ssl_hs_error;
448
509
  }
449
510
  if (ssl->s3->channel_id_valid || ssl->s3->token_binding_negotiated) {
450
511
  OPENSSL_PUT_ERROR(SSL, SSL_R_UNEXPECTED_EXTENSION_ON_EARLY_DATA);
512
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_ILLEGAL_PARAMETER);
451
513
  return ssl_hs_error;
452
514
  }
453
515
  }
@@ -459,6 +521,9 @@ static enum ssl_hs_wait_t do_read_encrypted_extensions(SSL_HANDSHAKE *hs) {
459
521
  ssl->method->next_message(ssl);
460
522
  hs->tls13_state = state_read_certificate_request;
461
523
  if (hs->in_early_data && !ssl->s3->early_data_accepted) {
524
+ if (!close_early_data(hs, ssl_encryption_handshake)) {
525
+ return ssl_hs_error;
526
+ }
462
527
  return ssl_hs_early_data_rejected;
463
528
  }
464
529
  return ssl_hs_ok;
@@ -594,7 +659,7 @@ static enum ssl_hs_wait_t do_read_server_certificate_verify(
594
659
 
595
660
  static enum ssl_hs_wait_t do_server_certificate_reverify(
596
661
  SSL_HANDSHAKE *hs) {
597
- switch (ssl_reverify_peer_cert(hs)) {
662
+ switch (ssl_reverify_peer_cert(hs, /*send_alert=*/true)) {
598
663
  case ssl_verify_ok:
599
664
  break;
600
665
  case ssl_verify_invalid:
@@ -623,6 +688,13 @@ static enum ssl_hs_wait_t do_read_server_finished(SSL_HANDSHAKE *hs) {
623
688
  return ssl_hs_error;
624
689
  }
625
690
 
691
+ // Finished should be the end of the flight.
692
+ if (ssl->method->has_unprocessed_handshake_data(ssl)) {
693
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE);
694
+ OPENSSL_PUT_ERROR(SSL, SSL_R_EXCESS_HANDSHAKE_DATA);
695
+ return ssl_hs_error;
696
+ }
697
+
626
698
  ssl->method->next_message(ssl);
627
699
  hs->tls13_state = state_send_end_of_early_data;
628
700
  return ssl_hs_ok;
@@ -632,7 +704,6 @@ static enum ssl_hs_wait_t do_send_end_of_early_data(SSL_HANDSHAKE *hs) {
632
704
  SSL *const ssl = hs->ssl;
633
705
 
634
706
  if (ssl->s3->early_data_accepted) {
635
- hs->can_early_write = false;
636
707
  // QUIC omits the EndOfEarlyData message. See draft-ietf-quic-tls-22,
637
708
  // section 8.3.
638
709
  if (ssl->quic_method == nullptr) {
@@ -644,11 +715,8 @@ static enum ssl_hs_wait_t do_send_end_of_early_data(SSL_HANDSHAKE *hs) {
644
715
  return ssl_hs_error;
645
716
  }
646
717
  }
647
- }
648
718
 
649
- if (hs->early_data_offered) {
650
- if (!tls13_set_traffic_key(ssl, ssl_encryption_handshake, evp_aead_seal,
651
- hs->client_handshake_secret())) {
719
+ if (!close_early_data(hs, ssl_encryption_handshake)) {
652
720
  return ssl_hs_error;
653
721
  }
654
722
  }
@@ -742,10 +810,12 @@ static enum ssl_hs_wait_t do_complete_second_flight(SSL_HANDSHAKE *hs) {
742
810
  }
743
811
 
744
812
  // Derive the final keys and enable them.
745
- if (!tls13_set_traffic_key(ssl, ssl_encryption_application, evp_aead_open,
746
- hs->server_traffic_secret_0()) ||
747
- !tls13_set_traffic_key(ssl, ssl_encryption_application, evp_aead_seal,
813
+ if (!tls13_set_traffic_key(ssl, ssl_encryption_application, evp_aead_seal,
814
+ hs->new_session.get(),
748
815
  hs->client_traffic_secret_0()) ||
816
+ !tls13_set_traffic_key(ssl, ssl_encryption_application, evp_aead_open,
817
+ hs->new_session.get(),
818
+ hs->server_traffic_secret_0()) ||
749
819
  !tls13_derive_resumption_secret(hs)) {
750
820
  return ssl_hs_error;
751
821
  }
@@ -62,7 +62,11 @@ bool tls13_init_key_schedule(SSL_HANDSHAKE *hs, Span psk) {
62
62
  return false;
63
63
  }
64
64
 
65
- hs->transcript.FreeBuffer();
65
+ // Handback includes the whole handshake transcript, so we cannot free the
66
+ // transcript buffer in the handback case.
67
+ if (!hs->handback) {
68
+ hs->transcript.FreeBuffer();
69
+ }
66
70
  return hkdf_extract_to_secret(hs, psk);
67
71
  }
68
72
 
@@ -135,12 +139,18 @@ static bool derive_secret(SSL_HANDSHAKE *hs, Span out,
135
139
 
136
140
  bool tls13_set_traffic_key(SSL *ssl, enum ssl_encryption_level_t level,
137
141
  enum evp_aead_direction_t direction,
142
+ const SSL_SESSION *session,
138
143
  Span<const uint8_t> traffic_secret) {
139
- const SSL_SESSION *session = SSL_get_session(ssl);
140
144
  uint16_t version = ssl_session_protocol_version(session);
141
-
142
145
  UniquePtr<SSLAEADContext> traffic_aead;
143
- if (ssl->quic_method == nullptr) {
146
+ Span<const uint8_t> secret_for_quic;
147
+ if (ssl->quic_method != nullptr) {
148
+ // Install a placeholder SSLAEADContext so that SSL accessors work. The
149
+ // encryption itself will be handled by the SSL_QUIC_METHOD.
150
+ traffic_aead =
151
+ SSLAEADContext::CreatePlaceholderForQUIC(version, session->cipher);
152
+ secret_for_quic = traffic_secret;
153
+ } else {
144
154
  // Look up cipher suite properties.
145
155
  const EVP_AEAD *aead;
146
156
  size_t discard;
@@ -169,34 +179,15 @@ bool tls13_set_traffic_key(SSL *ssl, enum ssl_encryption_level_t level,
169
179
  return false;
170
180
  }
171
181
 
172
-
173
182
  traffic_aead = SSLAEADContext::Create(direction, session->ssl_version,
174
183
  SSL_is_dtls(ssl), session->cipher,
175
184
  key, Span<const uint8_t>(), iv);
176
- } else {
177
- // Install a placeholder SSLAEADContext so that SSL accessors work. The
178
- // encryption itself will be handled by the SSL_QUIC_METHOD.
179
- traffic_aead =
180
- SSLAEADContext::CreatePlaceholderForQUIC(version, session->cipher);
181
- // QUIC never installs early data keys at the TLS layer.
182
- assert(level != ssl_encryption_early_data);
183
185
  }
184
186
 
185
187
  if (!traffic_aead) {
186
188
  return false;
187
189
  }
188
190
 
189
- if (direction == evp_aead_open) {
190
- if (!ssl->method->set_read_state(ssl, std::move(traffic_aead))) {
191
- return false;
192
- }
193
- } else {
194
- if (!ssl->method->set_write_state(ssl, std::move(traffic_aead))) {
195
- return false;
196
- }
197
- }
198
-
199
- // Save the traffic secret.
200
191
  if (traffic_secret.size() >
201
192
  OPENSSL_ARRAY_SIZE(ssl->s3->read_traffic_secret) ||
202
193
  traffic_secret.size() >
@@ -204,16 +195,23 @@ bool tls13_set_traffic_key(SSL *ssl, enum ssl_encryption_level_t level,
204
195
  OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
205
196
  return false;
206
197
  }
198
+
207
199
  if (direction == evp_aead_open) {
200
+ if (!ssl->method->set_read_state(ssl, level, std::move(traffic_aead),
201
+ secret_for_quic)) {
202
+ return false;
203
+ }
208
204
  OPENSSL_memmove(ssl->s3->read_traffic_secret, traffic_secret.data(),
209
205
  traffic_secret.size());
210
206
  ssl->s3->read_traffic_secret_len = traffic_secret.size();
211
- ssl->s3->read_level = level;
212
207
  } else {
208
+ if (!ssl->method->set_write_state(ssl, level, std::move(traffic_aead),
209
+ secret_for_quic)) {
210
+ return false;
211
+ }
213
212
  OPENSSL_memmove(ssl->s3->write_traffic_secret, traffic_secret.data(),
214
213
  traffic_secret.size());
215
214
  ssl->s3->write_traffic_secret_len = traffic_secret.size();
216
- ssl->s3->write_level = level;
217
215
  }
218
216
 
219
217
  return true;
@@ -239,47 +237,6 @@ bool tls13_derive_early_secret(SSL_HANDSHAKE *hs) {
239
237
  return true;
240
238
  }
241
239
 
242
- bool tls13_set_early_secret_for_quic(SSL_HANDSHAKE *hs) {
243
- SSL *const ssl = hs->ssl;
244
- if (ssl->quic_method == nullptr) {
245
- return true;
246
- }
247
- if (ssl->server) {
248
- if (!ssl->quic_method->set_encryption_secrets(
249
- ssl, ssl_encryption_early_data, hs->early_traffic_secret().data(),
250
- /*write_secret=*/nullptr, hs->early_traffic_secret().size())) {
251
- OPENSSL_PUT_ERROR(SSL, SSL_R_QUIC_INTERNAL_ERROR);
252
- return false;
253
- }
254
- } else {
255
- if (!ssl->quic_method->set_encryption_secrets(
256
- ssl, ssl_encryption_early_data, /*read_secret=*/nullptr,
257
- hs->early_traffic_secret().data(),
258
- hs->early_traffic_secret().size())) {
259
- OPENSSL_PUT_ERROR(SSL, SSL_R_QUIC_INTERNAL_ERROR);
260
- return false;
261
- }
262
- }
263
- return true;
264
- }
265
-
266
- static bool set_quic_secrets(SSL_HANDSHAKE *hs, ssl_encryption_level_t level,
267
- Span<const uint8_t> client_write_secret,
268
- Span<const uint8_t> server_write_secret) {
269
- SSL *const ssl = hs->ssl;
270
- assert(client_write_secret.size() == server_write_secret.size());
271
- if (ssl->quic_method == nullptr) {
272
- return true;
273
- }
274
- if (!ssl->server) {
275
- std::swap(client_write_secret, server_write_secret);
276
- }
277
- return ssl->quic_method->set_encryption_secrets(
278
- ssl, level,
279
- /*read_secret=*/client_write_secret.data(),
280
- /*write_secret=*/server_write_secret.data(), client_write_secret.size());
281
- }
282
-
283
240
  bool tls13_derive_handshake_secrets(SSL_HANDSHAKE *hs) {
284
241
  SSL *const ssl = hs->ssl;
285
242
  if (!derive_secret(hs, hs->client_handshake_secret(),
@@ -289,10 +246,7 @@ bool tls13_derive_handshake_secrets(SSL_HANDSHAKE *hs) {
289
246
  !derive_secret(hs, hs->server_handshake_secret(),
290
247
  label_to_span(kTLS13LabelServerHandshakeTraffic)) ||
291
248
  !ssl_log_secret(ssl, "SERVER_HANDSHAKE_TRAFFIC_SECRET",
292
- hs->server_handshake_secret()) ||
293
- !set_quic_secrets(hs, ssl_encryption_handshake,
294
- hs->client_handshake_secret(),
295
- hs->server_handshake_secret())) {
249
+ hs->server_handshake_secret())) {
296
250
  return false;
297
251
  }
298
252
 
@@ -315,10 +269,7 @@ bool tls13_derive_application_secrets(SSL_HANDSHAKE *hs) {
315
269
  label_to_span(kTLS13LabelExporter)) ||
316
270
  !ssl_log_secret(ssl, "EXPORTER_SECRET",
317
271
  MakeConstSpan(ssl->s3->exporter_secret,
318
- ssl->s3->exporter_secret_len)) ||
319
- !set_quic_secrets(hs, ssl_encryption_application,
320
- hs->client_traffic_secret_0(),
321
- hs->server_traffic_secret_0())) {
272
+ ssl->s3->exporter_secret_len))) {
322
273
  return false;
323
274
  }
324
275
 
@@ -337,11 +288,12 @@ bool tls13_rotate_traffic_key(SSL *ssl, enum evp_aead_direction_t direction) {
337
288
  ssl->s3->write_traffic_secret_len);
338
289
  }
339
290
 
340
- const EVP_MD *digest = ssl_session_get_digest(SSL_get_session(ssl));
291
+ const SSL_SESSION *session = SSL_get_session(ssl);
292
+ const EVP_MD *digest = ssl_session_get_digest(session);
341
293
  return hkdf_expand_label(secret, digest, secret,
342
294
  label_to_span(kTLS13LabelApplicationTraffic), {}) &&
343
295
  tls13_set_traffic_key(ssl, ssl_encryption_application, direction,
344
- secret);
296
+ session, secret);
345
297
  }
346
298
 
347
299
  static const char kTLS13LabelResumption[] = "res master";
@@ -33,24 +33,6 @@
33
33
 
34
34
  BSSL_NAMESPACE_BEGIN
35
35
 
36
- enum server_hs_state_t {
37
- state_select_parameters = 0,
38
- state_select_session,
39
- state_send_hello_retry_request,
40
- state_read_second_client_hello,
41
- state_send_server_hello,
42
- state_send_server_certificate_verify,
43
- state_send_server_finished,
44
- state_read_second_client_flight,
45
- state_process_end_of_early_data,
46
- state_read_client_certificate,
47
- state_read_client_certificate_verify,
48
- state_read_channel_id,
49
- state_read_client_finished,
50
- state_send_new_session_ticket,
51
- state_done,
52
- };
53
-
54
36
  static const uint8_t kZeroes[EVP_MAX_MD_SIZE] = {0};
55
37
 
56
38
  // Allow a minute of ticket age skew in either direction. This covers
@@ -244,7 +226,7 @@ static enum ssl_hs_wait_t do_select_parameters(SSL_HANDSHAKE *hs) {
244
226
  return ssl_hs_error;
245
227
  }
246
228
 
247
- hs->tls13_state = state_select_session;
229
+ hs->tls13_state = state13_select_session;
248
230
  return ssl_hs_ok;
249
231
  }
250
232
 
@@ -327,6 +309,23 @@ static enum ssl_ticket_aead_result_t select_session(
327
309
  return ssl_ticket_aead_success;
328
310
  }
329
311
 
312
+ static bool quic_ticket_compatible(const SSL_SESSION *session,
313
+ const SSL_CONFIG *config) {
314
+ if (!session->is_quic) {
315
+ return true;
316
+ }
317
+ if (session->quic_early_data_hash.size() != SHA256_DIGEST_LENGTH) {
318
+ return false;
319
+ }
320
+ uint8_t early_data_hash[SHA256_DIGEST_LENGTH];
321
+ if (!compute_quic_early_data_hash(config, early_data_hash) ||
322
+ CRYPTO_memcmp(session->quic_early_data_hash.data(), early_data_hash,
323
+ SHA256_DIGEST_LENGTH) != 0) {
324
+ return false;
325
+ }
326
+ return true;
327
+ }
328
+
330
329
  static enum ssl_hs_wait_t do_select_session(SSL_HANDSHAKE *hs) {
331
330
  SSL *const ssl = hs->ssl;
332
331
  SSLMessage msg;
@@ -370,6 +369,10 @@ static enum ssl_hs_wait_t do_select_session(SSL_HANDSHAKE *hs) {
370
369
  return ssl_hs_error;
371
370
  }
372
371
 
372
+ // |ssl_session_is_resumable| forbids cross-cipher resumptions even if the
373
+ // PRF hashes match.
374
+ assert(hs->new_cipher == session->cipher);
375
+
373
376
  if (!ssl->enable_early_data) {
374
377
  ssl->s3->early_data_reason = ssl_early_data_disabled;
375
378
  } else if (session->ticket_max_early_data == 0) {
@@ -388,6 +391,8 @@ static enum ssl_hs_wait_t do_select_session(SSL_HANDSHAKE *hs) {
388
391
  } else if (ssl->s3->ticket_age_skew < -kMaxTicketAgeSkewSeconds ||
389
392
  kMaxTicketAgeSkewSeconds < ssl->s3->ticket_age_skew) {
390
393
  ssl->s3->early_data_reason = ssl_early_data_ticket_age_skew;
394
+ } else if (!quic_ticket_compatible(session.get(), hs->config)) {
395
+ ssl->s3->early_data_reason = ssl_early_data_quic_parameter_mismatch;
391
396
  } else {
392
397
  ssl->s3->early_data_reason = ssl_early_data_accepted;
393
398
  ssl->s3->early_data_accepted = true;
@@ -405,7 +410,7 @@ static enum ssl_hs_wait_t do_select_session(SSL_HANDSHAKE *hs) {
405
410
  return ssl_hs_error;
406
411
 
407
412
  case ssl_ticket_aead_retry:
408
- hs->tls13_state = state_select_session;
413
+ hs->tls13_state = state13_select_session;
409
414
  return ssl_hs_pending_ticket;
410
415
  }
411
416
 
@@ -465,23 +470,14 @@ static enum ssl_hs_wait_t do_select_session(SSL_HANDSHAKE *hs) {
465
470
  if (!hs->transcript.UpdateForHelloRetryRequest()) {
466
471
  return ssl_hs_error;
467
472
  }
468
- hs->tls13_state = state_send_hello_retry_request;
473
+ hs->tls13_state = state13_send_hello_retry_request;
469
474
  return ssl_hs_ok;
470
475
  }
471
476
  return ssl_hs_error;
472
477
  }
473
478
 
474
- // Note we defer releasing the early traffic secret to QUIC until after ECDHE
475
- // is resolved. The early traffic secret should be derived before the key
476
- // schedule incorporates ECDHE, but doing so may reject 0-RTT. To avoid
477
- // confusing the caller, we split derivation and releasing the secret to QUIC.
478
- if (ssl->s3->early_data_accepted &&
479
- !tls13_set_early_secret_for_quic(hs)) {
480
- return ssl_hs_error;
481
- }
482
-
483
479
  ssl->method->next_message(ssl);
484
- hs->tls13_state = state_send_server_hello;
480
+ hs->tls13_state = state13_send_server_hello;
485
481
  return ssl_hs_ok;
486
482
  }
487
483
 
@@ -515,8 +511,8 @@ static enum ssl_hs_wait_t do_send_hello_retry_request(SSL_HANDSHAKE *hs) {
515
511
  return ssl_hs_error;
516
512
  }
517
513
 
518
- hs->sent_hello_retry_request = true;
519
- hs->tls13_state = state_read_second_client_hello;
514
+ ssl->s3->used_hello_retry_request = true;
515
+ hs->tls13_state = state13_read_second_client_hello;
520
516
  return ssl_hs_flush;
521
517
  }
522
518
 
@@ -585,8 +581,15 @@ static enum ssl_hs_wait_t do_read_second_client_hello(SSL_HANDSHAKE *hs) {
585
581
  return ssl_hs_error;
586
582
  }
587
583
 
584
+ // ClientHello should be the end of the flight.
585
+ if (ssl->method->has_unprocessed_handshake_data(ssl)) {
586
+ ssl_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE);
587
+ OPENSSL_PUT_ERROR(SSL, SSL_R_EXCESS_HANDSHAKE_DATA);
588
+ return ssl_hs_error;
589
+ }
590
+
588
591
  ssl->method->next_message(ssl);
589
- hs->tls13_state = state_send_server_hello;
592
+ hs->tls13_state = state13_send_server_hello;
590
593
  return ssl_hs_ok;
591
594
  }
592
595
 
@@ -612,7 +615,7 @@ static enum ssl_hs_wait_t do_send_server_hello(SSL_HANDSHAKE *hs) {
612
615
  return ssl_hs_error;
613
616
  }
614
617
 
615
- if (!hs->sent_hello_retry_request &&
618
+ if (!ssl->s3->used_hello_retry_request &&
616
619
  !ssl->method->add_change_cipher_spec(ssl)) {
617
620
  return ssl_hs_error;
618
621
  }
@@ -620,6 +623,7 @@ static enum ssl_hs_wait_t do_send_server_hello(SSL_HANDSHAKE *hs) {
620
623
  // Derive and enable the handshake traffic secrets.
621
624
  if (!tls13_derive_handshake_secrets(hs) ||
622
625
  !tls13_set_traffic_key(ssl, ssl_encryption_handshake, evp_aead_seal,
626
+ hs->new_session.get(),
623
627
  hs->server_handshake_secret())) {
624
628
  return ssl_hs_error;
625
629
  }
@@ -654,22 +658,10 @@ static enum ssl_hs_wait_t do_send_server_hello(SSL_HANDSHAKE *hs) {
654
658
  !CBB_add_u16_length_prefixed(&cert_request_extensions,
655
659
  &sigalg_contents) ||
656
660
  !CBB_add_u16_length_prefixed(&sigalg_contents, &sigalgs_cbb) ||
657
- !tls12_add_verify_sigalgs(ssl, &sigalgs_cbb,
658
- false /* online signature */)) {
661
+ !tls12_add_verify_sigalgs(hs, &sigalgs_cbb)) {
659
662
  return ssl_hs_error;
660
663
  }
661
664
 
662
- if (tls12_has_different_verify_sigalgs_for_certs(ssl)) {
663
- if (!CBB_add_u16(&cert_request_extensions,
664
- TLSEXT_TYPE_signature_algorithms_cert) ||
665
- !CBB_add_u16_length_prefixed(&cert_request_extensions,
666
- &sigalg_contents) ||
667
- !CBB_add_u16_length_prefixed(&sigalg_contents, &sigalgs_cbb) ||
668
- !tls12_add_verify_sigalgs(ssl, &sigalgs_cbb, true /* certs */)) {
669
- return ssl_hs_error;
670
- }
671
- }
672
-
673
665
  if (ssl_has_client_CAs(hs->config)) {
674
666
  CBB ca_contents;
675
667
  if (!CBB_add_u16(&cert_request_extensions,
@@ -698,22 +690,22 @@ static enum ssl_hs_wait_t do_send_server_hello(SSL_HANDSHAKE *hs) {
698
690
  return ssl_hs_error;
699
691
  }
700
692
 
701
- hs->tls13_state = state_send_server_certificate_verify;
693
+ hs->tls13_state = state13_send_server_certificate_verify;
702
694
  return ssl_hs_ok;
703
695
  }
704
696
 
705
- hs->tls13_state = state_send_server_finished;
697
+ hs->tls13_state = state13_send_server_finished;
706
698
  return ssl_hs_ok;
707
699
  }
708
700
 
709
701
  static enum ssl_hs_wait_t do_send_server_certificate_verify(SSL_HANDSHAKE *hs) {
710
702
  switch (tls13_add_certificate_verify(hs)) {
711
703
  case ssl_private_key_success:
712
- hs->tls13_state = state_send_server_finished;
704
+ hs->tls13_state = state13_send_server_finished;
713
705
  return ssl_hs_ok;
714
706
 
715
707
  case ssl_private_key_retry:
716
- hs->tls13_state = state_send_server_certificate_verify;
708
+ hs->tls13_state = state13_send_server_certificate_verify;
717
709
  return ssl_hs_private_key_operation;
718
710
 
719
711
  case ssl_private_key_failure:
@@ -732,10 +724,18 @@ static enum ssl_hs_wait_t do_send_server_finished(SSL_HANDSHAKE *hs) {
732
724
  hs, MakeConstSpan(kZeroes, hs->transcript.DigestLen())) ||
733
725
  !tls13_derive_application_secrets(hs) ||
734
726
  !tls13_set_traffic_key(ssl, ssl_encryption_application, evp_aead_seal,
727
+ hs->new_session.get(),
735
728
  hs->server_traffic_secret_0())) {
736
729
  return ssl_hs_error;
737
730
  }
738
731
 
732
+ hs->tls13_state = state13_send_half_rtt_ticket;
733
+ return hs->handback ? ssl_hs_handback : ssl_hs_ok;
734
+ }
735
+
736
+ static enum ssl_hs_wait_t do_send_half_rtt_ticket(SSL_HANDSHAKE *hs) {
737
+ SSL *const ssl = hs->ssl;
738
+
739
739
  if (ssl->s3->early_data_accepted) {
740
740
  // If accepting 0-RTT, we send tickets half-RTT. This gets the tickets on
741
741
  // the wire sooner and also avoids triggering a write on |SSL_read| when
@@ -778,16 +778,15 @@ static enum ssl_hs_wait_t do_send_server_finished(SSL_HANDSHAKE *hs) {
778
778
  }
779
779
  }
780
780
 
781
- hs->tls13_state = state_read_second_client_flight;
781
+ hs->tls13_state = state13_read_second_client_flight;
782
782
  return ssl_hs_flush;
783
783
  }
784
784
 
785
785
  static enum ssl_hs_wait_t do_read_second_client_flight(SSL_HANDSHAKE *hs) {
786
786
  SSL *const ssl = hs->ssl;
787
787
  if (ssl->s3->early_data_accepted) {
788
- // QUIC never receives handshake messages under 0-RTT keys.
789
- if (ssl->quic_method == nullptr &&
790
- !tls13_set_traffic_key(ssl, ssl_encryption_early_data, evp_aead_open,
788
+ if (!tls13_set_traffic_key(ssl, ssl_encryption_early_data, evp_aead_open,
789
+ hs->new_session.get(),
791
790
  hs->early_traffic_secret())) {
792
791
  return ssl_hs_error;
793
792
  }
@@ -801,14 +800,15 @@ static enum ssl_hs_wait_t do_read_second_client_flight(SSL_HANDSHAKE *hs) {
801
800
  // return.
802
801
  if (ssl->quic_method != nullptr) {
803
802
  if (!tls13_set_traffic_key(ssl, ssl_encryption_handshake, evp_aead_open,
803
+ hs->new_session.get(),
804
804
  hs->client_handshake_secret())) {
805
805
  return ssl_hs_error;
806
806
  }
807
- hs->tls13_state = state_read_client_certificate;
807
+ hs->tls13_state = state13_read_client_certificate;
808
808
  return ssl->s3->early_data_accepted ? ssl_hs_early_return : ssl_hs_ok;
809
809
  }
810
810
 
811
- hs->tls13_state = state_process_end_of_early_data;
811
+ hs->tls13_state = state13_process_end_of_early_data;
812
812
  return ssl->s3->early_data_accepted ? ssl_hs_read_end_of_early_data
813
813
  : ssl_hs_ok;
814
814
  }
@@ -833,10 +833,11 @@ static enum ssl_hs_wait_t do_process_end_of_early_data(SSL_HANDSHAKE *hs) {
833
833
  ssl->method->next_message(ssl);
834
834
  }
835
835
  if (!tls13_set_traffic_key(ssl, ssl_encryption_handshake, evp_aead_open,
836
+ hs->new_session.get(),
836
837
  hs->client_handshake_secret())) {
837
838
  return ssl_hs_error;
838
839
  }
839
- hs->tls13_state = state_read_client_certificate;
840
+ hs->tls13_state = state13_read_client_certificate;
840
841
  return ssl_hs_ok;
841
842
  }
842
843
 
@@ -853,7 +854,7 @@ static enum ssl_hs_wait_t do_read_client_certificate(SSL_HANDSHAKE *hs) {
853
854
  }
854
855
 
855
856
  // Skip this state.
856
- hs->tls13_state = state_read_channel_id;
857
+ hs->tls13_state = state13_read_channel_id;
857
858
  return ssl_hs_ok;
858
859
  }
859
860
 
@@ -870,7 +871,7 @@ static enum ssl_hs_wait_t do_read_client_certificate(SSL_HANDSHAKE *hs) {
870
871
  }
871
872
 
872
873
  ssl->method->next_message(ssl);
873
- hs->tls13_state = state_read_client_certificate_verify;
874
+ hs->tls13_state = state13_read_client_certificate_verify;
874
875
  return ssl_hs_ok;
875
876
  }
876
877
 
@@ -879,7 +880,7 @@ static enum ssl_hs_wait_t do_read_client_certificate_verify(
879
880
  SSL *const ssl = hs->ssl;
880
881
  if (sk_CRYPTO_BUFFER_num(hs->new_session->certs.get()) == 0) {
881
882
  // Skip this state.
882
- hs->tls13_state = state_read_channel_id;
883
+ hs->tls13_state = state13_read_channel_id;
883
884
  return ssl_hs_ok;
884
885
  }
885
886
 
@@ -894,7 +895,7 @@ static enum ssl_hs_wait_t do_read_client_certificate_verify(
894
895
  case ssl_verify_invalid:
895
896
  return ssl_hs_error;
896
897
  case ssl_verify_retry:
897
- hs->tls13_state = state_read_client_certificate_verify;
898
+ hs->tls13_state = state13_read_client_certificate_verify;
898
899
  return ssl_hs_certificate_verify;
899
900
  }
900
901
 
@@ -905,14 +906,14 @@ static enum ssl_hs_wait_t do_read_client_certificate_verify(
905
906
  }
906
907
 
907
908
  ssl->method->next_message(ssl);
908
- hs->tls13_state = state_read_channel_id;
909
+ hs->tls13_state = state13_read_channel_id;
909
910
  return ssl_hs_ok;
910
911
  }
911
912
 
912
913
  static enum ssl_hs_wait_t do_read_channel_id(SSL_HANDSHAKE *hs) {
913
914
  SSL *const ssl = hs->ssl;
914
915
  if (!ssl->s3->channel_id_valid) {
915
- hs->tls13_state = state_read_client_finished;
916
+ hs->tls13_state = state13_read_client_finished;
916
917
  return ssl_hs_ok;
917
918
  }
918
919
 
@@ -927,7 +928,7 @@ static enum ssl_hs_wait_t do_read_channel_id(SSL_HANDSHAKE *hs) {
927
928
  }
928
929
 
929
930
  ssl->method->next_message(ssl);
930
- hs->tls13_state = state_read_client_finished;
931
+ hs->tls13_state = state13_read_client_finished;
931
932
  return ssl_hs_ok;
932
933
  }
933
934
 
@@ -943,6 +944,7 @@ static enum ssl_hs_wait_t do_read_client_finished(SSL_HANDSHAKE *hs) {
943
944
  !tls13_process_finished(hs, msg, ssl->s3->early_data_accepted) ||
944
945
  // evp_aead_seal keys have already been switched.
945
946
  !tls13_set_traffic_key(ssl, ssl_encryption_application, evp_aead_open,
947
+ hs->new_session.get(),
946
948
  hs->client_traffic_secret_0())) {
947
949
  return ssl_hs_error;
948
950
  }
@@ -954,10 +956,10 @@ static enum ssl_hs_wait_t do_read_client_finished(SSL_HANDSHAKE *hs) {
954
956
  }
955
957
 
956
958
  // We send post-handshake tickets as part of the handshake in 1-RTT.
957
- hs->tls13_state = state_send_new_session_ticket;
959
+ hs->tls13_state = state13_send_new_session_ticket;
958
960
  } else {
959
961
  // We already sent half-RTT tickets.
960
- hs->tls13_state = state_done;
962
+ hs->tls13_state = state13_done;
961
963
  }
962
964
 
963
965
  ssl->method->next_message(ssl);
@@ -970,7 +972,7 @@ static enum ssl_hs_wait_t do_send_new_session_ticket(SSL_HANDSHAKE *hs) {
970
972
  return ssl_hs_error;
971
973
  }
972
974
 
973
- hs->tls13_state = state_done;
975
+ hs->tls13_state = state13_done;
974
976
  // In TLS 1.3, the NewSessionTicket isn't flushed until the server performs a
975
977
  // write, to prevent a non-reading client from causing the server to hang in
976
978
  // the case of a small server write buffer. Consumers which don't write data
@@ -983,54 +985,57 @@ static enum ssl_hs_wait_t do_send_new_session_ticket(SSL_HANDSHAKE *hs) {
983
985
  }
984
986
 
985
987
  enum ssl_hs_wait_t tls13_server_handshake(SSL_HANDSHAKE *hs) {
986
- while (hs->tls13_state != state_done) {
988
+ while (hs->tls13_state != state13_done) {
987
989
  enum ssl_hs_wait_t ret = ssl_hs_error;
988
- enum server_hs_state_t state =
989
- static_cast<enum server_hs_state_t>(hs->tls13_state);
990
+ enum tls13_server_hs_state_t state =
991
+ static_cast<enum tls13_server_hs_state_t>(hs->tls13_state);
990
992
  switch (state) {
991
- case state_select_parameters:
993
+ case state13_select_parameters:
992
994
  ret = do_select_parameters(hs);
993
995
  break;
994
- case state_select_session:
996
+ case state13_select_session:
995
997
  ret = do_select_session(hs);
996
998
  break;
997
- case state_send_hello_retry_request:
999
+ case state13_send_hello_retry_request:
998
1000
  ret = do_send_hello_retry_request(hs);
999
1001
  break;
1000
- case state_read_second_client_hello:
1002
+ case state13_read_second_client_hello:
1001
1003
  ret = do_read_second_client_hello(hs);
1002
1004
  break;
1003
- case state_send_server_hello:
1005
+ case state13_send_server_hello:
1004
1006
  ret = do_send_server_hello(hs);
1005
1007
  break;
1006
- case state_send_server_certificate_verify:
1008
+ case state13_send_server_certificate_verify:
1007
1009
  ret = do_send_server_certificate_verify(hs);
1008
1010
  break;
1009
- case state_send_server_finished:
1011
+ case state13_send_server_finished:
1010
1012
  ret = do_send_server_finished(hs);
1011
1013
  break;
1012
- case state_read_second_client_flight:
1014
+ case state13_send_half_rtt_ticket:
1015
+ ret = do_send_half_rtt_ticket(hs);
1016
+ break;
1017
+ case state13_read_second_client_flight:
1013
1018
  ret = do_read_second_client_flight(hs);
1014
1019
  break;
1015
- case state_process_end_of_early_data:
1020
+ case state13_process_end_of_early_data:
1016
1021
  ret = do_process_end_of_early_data(hs);
1017
1022
  break;
1018
- case state_read_client_certificate:
1023
+ case state13_read_client_certificate:
1019
1024
  ret = do_read_client_certificate(hs);
1020
1025
  break;
1021
- case state_read_client_certificate_verify:
1026
+ case state13_read_client_certificate_verify:
1022
1027
  ret = do_read_client_certificate_verify(hs);
1023
1028
  break;
1024
- case state_read_channel_id:
1029
+ case state13_read_channel_id:
1025
1030
  ret = do_read_channel_id(hs);
1026
1031
  break;
1027
- case state_read_client_finished:
1032
+ case state13_read_client_finished:
1028
1033
  ret = do_read_client_finished(hs);
1029
1034
  break;
1030
- case state_send_new_session_ticket:
1035
+ case state13_send_new_session_ticket:
1031
1036
  ret = do_send_new_session_ticket(hs);
1032
1037
  break;
1033
- case state_done:
1038
+ case state13_done:
1034
1039
  ret = ssl_hs_ok;
1035
1040
  break;
1036
1041
  }
@@ -1048,38 +1053,40 @@ enum ssl_hs_wait_t tls13_server_handshake(SSL_HANDSHAKE *hs) {
1048
1053
  }
1049
1054
 
1050
1055
  const char *tls13_server_handshake_state(SSL_HANDSHAKE *hs) {
1051
- enum server_hs_state_t state =
1052
- static_cast<enum server_hs_state_t>(hs->tls13_state);
1056
+ enum tls13_server_hs_state_t state =
1057
+ static_cast<enum tls13_server_hs_state_t>(hs->tls13_state);
1053
1058
  switch (state) {
1054
- case state_select_parameters:
1059
+ case state13_select_parameters:
1055
1060
  return "TLS 1.3 server select_parameters";
1056
- case state_select_session:
1061
+ case state13_select_session:
1057
1062
  return "TLS 1.3 server select_session";
1058
- case state_send_hello_retry_request:
1063
+ case state13_send_hello_retry_request:
1059
1064
  return "TLS 1.3 server send_hello_retry_request";
1060
- case state_read_second_client_hello:
1065
+ case state13_read_second_client_hello:
1061
1066
  return "TLS 1.3 server read_second_client_hello";
1062
- case state_send_server_hello:
1067
+ case state13_send_server_hello:
1063
1068
  return "TLS 1.3 server send_server_hello";
1064
- case state_send_server_certificate_verify:
1069
+ case state13_send_server_certificate_verify:
1065
1070
  return "TLS 1.3 server send_server_certificate_verify";
1066
- case state_send_server_finished:
1071
+ case state13_send_half_rtt_ticket:
1072
+ return "TLS 1.3 server send_half_rtt_ticket";
1073
+ case state13_send_server_finished:
1067
1074
  return "TLS 1.3 server send_server_finished";
1068
- case state_read_second_client_flight:
1075
+ case state13_read_second_client_flight:
1069
1076
  return "TLS 1.3 server read_second_client_flight";
1070
- case state_process_end_of_early_data:
1077
+ case state13_process_end_of_early_data:
1071
1078
  return "TLS 1.3 server process_end_of_early_data";
1072
- case state_read_client_certificate:
1079
+ case state13_read_client_certificate:
1073
1080
  return "TLS 1.3 server read_client_certificate";
1074
- case state_read_client_certificate_verify:
1081
+ case state13_read_client_certificate_verify:
1075
1082
  return "TLS 1.3 server read_client_certificate_verify";
1076
- case state_read_channel_id:
1083
+ case state13_read_channel_id:
1077
1084
  return "TLS 1.3 server read_channel_id";
1078
- case state_read_client_finished:
1085
+ case state13_read_client_finished:
1079
1086
  return "TLS 1.3 server read_client_finished";
1080
- case state_send_new_session_ticket:
1087
+ case state13_send_new_session_ticket:
1081
1088
  return "TLS 1.3 server send_new_session_ticket";
1082
- case state_done:
1089
+ case state13_done:
1083
1090
  return "TLS 1.3 server done";
1084
1091
  }
1085
1092