grpc 1.27.0 → 1.28.0.pre2

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 (678) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +707 -629
  3. data/include/grpc/impl/codegen/grpc_types.h +5 -0
  4. data/include/grpc/impl/codegen/port_platform.h +7 -0
  5. data/include/grpc/impl/codegen/sync.h +5 -3
  6. data/include/grpc/impl/codegen/sync_abseil.h +36 -0
  7. data/include/grpc/module.modulemap +3 -0
  8. data/include/grpc/support/sync_abseil.h +26 -0
  9. data/src/core/ext/filters/client_channel/client_channel.cc +47 -29
  10. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +31 -47
  11. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -3
  12. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  13. data/src/core/ext/filters/client_channel/http_proxy.cc +4 -1
  14. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +21 -28
  15. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +18 -21
  16. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +9 -13
  17. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +46 -72
  18. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +413 -422
  19. data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -3
  20. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +43 -75
  21. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  22. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +57 -70
  23. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +1 -1
  24. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -1
  25. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
  26. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +3 -3
  27. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -2
  28. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
  29. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +3 -3
  30. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
  31. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +228 -286
  32. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +2 -2
  33. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +13 -14
  34. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +5 -7
  35. data/src/core/ext/filters/client_channel/service_config.cc +91 -160
  36. data/src/core/ext/filters/client_channel/service_config.h +14 -21
  37. data/src/core/ext/filters/client_channel/xds/xds_api.cc +581 -251
  38. data/src/core/ext/filters/client_channel/xds/xds_api.h +189 -151
  39. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +133 -350
  40. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +18 -39
  41. data/src/core/ext/filters/client_channel/xds/xds_channel.h +3 -1
  42. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +12 -9
  43. data/src/core/ext/filters/client_channel/xds/xds_client.cc +559 -242
  44. data/src/core/ext/filters/client_channel/xds/xds_client.h +54 -34
  45. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +53 -128
  46. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +105 -132
  47. data/src/core/ext/filters/message_size/message_size_filter.cc +32 -35
  48. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  49. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +3 -6
  50. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +4 -6
  51. data/src/core/ext/transport/chttp2/transport/writing.cc +1 -1
  52. data/src/core/ext/transport/inproc/inproc_transport.cc +22 -42
  53. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +17 -0
  54. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +30 -0
  55. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +27 -0
  56. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +54 -0
  57. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +46 -21
  58. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +116 -29
  59. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +4 -362
  60. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +14 -1337
  61. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +390 -0
  62. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +1411 -0
  63. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +29 -8
  64. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +60 -0
  65. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +1 -0
  66. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +1 -0
  67. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +5 -3
  68. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +6 -2
  69. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +48 -5
  70. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +154 -4
  71. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +19 -15
  72. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +46 -32
  73. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +26 -4
  74. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +70 -0
  75. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +42 -25
  76. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +83 -25
  77. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +1 -0
  78. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +43 -7
  79. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +115 -0
  80. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -0
  81. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +7 -68
  82. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +14 -201
  83. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +91 -0
  84. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +240 -0
  85. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +1 -71
  86. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +3 -228
  87. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +88 -0
  88. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +258 -0
  89. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +1 -0
  90. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +30 -0
  91. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +53 -0
  92. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +104 -0
  93. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +383 -0
  94. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +17 -0
  95. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +33 -0
  96. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +144 -0
  97. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +527 -0
  98. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +42 -0
  99. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +112 -0
  100. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +29 -0
  101. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +53 -0
  102. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +62 -0
  103. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +199 -0
  104. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +17 -0
  105. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +33 -0
  106. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +793 -0
  107. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +2936 -0
  108. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +58 -0
  109. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +134 -0
  110. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +27 -0
  111. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +53 -0
  112. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +227 -0
  113. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +725 -0
  114. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +296 -0
  115. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +1072 -0
  116. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +32 -0
  117. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +65 -0
  118. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +47 -0
  119. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +108 -0
  120. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +52 -0
  121. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +133 -0
  122. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +87 -0
  123. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +258 -0
  124. data/src/core/ext/upb-generated/envoy/type/range.upb.c +11 -0
  125. data/src/core/ext/upb-generated/envoy/type/range.upb.h +27 -0
  126. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +28 -0
  127. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +62 -0
  128. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +88 -0
  129. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +249 -0
  130. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +30 -27
  131. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +64 -52
  132. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +48 -0
  133. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +104 -0
  134. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +17 -0
  135. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +30 -0
  136. data/src/core/ext/upb-generated/validate/validate.upb.c +38 -34
  137. data/src/core/ext/upb-generated/validate/validate.upb.h +129 -99
  138. data/src/core/lib/channel/channel_trace.cc +32 -41
  139. data/src/core/lib/channel/channel_trace.h +3 -3
  140. data/src/core/lib/channel/channelz.cc +158 -248
  141. data/src/core/lib/channel/channelz.h +12 -15
  142. data/src/core/lib/channel/channelz_registry.cc +47 -74
  143. data/src/core/lib/channel/channelz_registry.h +4 -4
  144. data/src/core/lib/gpr/sync_abseil.cc +114 -0
  145. data/src/core/lib/gpr/sync_posix.cc +8 -5
  146. data/src/core/lib/gpr/sync_windows.cc +4 -2
  147. data/src/core/lib/gprpp/host_port.cc +1 -1
  148. data/src/core/lib/gprpp/inlined_vector.h +1 -210
  149. data/src/core/lib/gprpp/memory.h +2 -6
  150. data/src/core/lib/gprpp/optional.h +0 -41
  151. data/src/core/lib/gprpp/string_view.h +5 -114
  152. data/src/core/lib/iomgr/buffer_list.cc +36 -35
  153. data/src/core/lib/iomgr/error.h +4 -4
  154. data/src/core/lib/iomgr/ev_epollex_linux.cc +12 -4
  155. data/src/core/lib/iomgr/load_file.cc +1 -0
  156. data/src/core/lib/iomgr/tcp_client_posix.cc +17 -17
  157. data/src/core/lib/iomgr/tcp_client_posix.h +6 -6
  158. data/src/core/lib/iomgr/tcp_posix.cc +2 -1
  159. data/src/core/lib/iomgr/work_serializer.cc +155 -0
  160. data/src/core/lib/iomgr/work_serializer.h +65 -0
  161. data/src/core/lib/json/json.h +209 -79
  162. data/src/core/lib/json/json_reader.cc +469 -455
  163. data/src/core/lib/json/json_writer.cc +173 -169
  164. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  165. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +10 -8
  166. data/src/core/lib/security/credentials/jwt/json_token.cc +26 -56
  167. data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
  168. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -18
  169. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +149 -159
  170. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
  171. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +37 -34
  172. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
  173. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +2 -1
  174. data/src/core/lib/security/security_connector/local/local_security_connector.cc +5 -7
  175. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +3 -15
  176. data/src/core/lib/security/security_connector/ssl_utils.cc +3 -1
  177. data/src/core/lib/security/security_connector/ssl_utils.h +0 -1
  178. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +24 -1
  179. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -1
  180. data/src/core/lib/security/transport/security_handshaker.cc +2 -2
  181. data/src/core/lib/security/util/json_util.cc +22 -15
  182. data/src/core/lib/security/util/json_util.h +2 -2
  183. data/src/core/lib/surface/version.cc +1 -1
  184. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  185. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  186. data/src/core/tsi/grpc_shadow_boringssl.h +1333 -1319
  187. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  188. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -1
  189. data/src/core/tsi/ssl_transport_security.cc +2 -1
  190. data/src/ruby/lib/grpc/version.rb +1 -1
  191. data/third_party/abseil-cpp/absl/base/attributes.h +1 -1
  192. data/third_party/abseil-cpp/absl/base/config.h +10 -4
  193. data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +30 -9
  194. data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
  195. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +7 -5
  196. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +2 -1
  197. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +2 -2
  198. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -3
  199. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +3 -3
  200. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +37 -0
  201. data/third_party/abseil-cpp/absl/base/options.h +2 -10
  202. data/third_party/abseil-cpp/absl/strings/charconv.cc +0 -1
  203. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +388 -0
  204. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +432 -0
  205. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +245 -0
  206. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +209 -0
  207. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +326 -0
  208. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +51 -0
  209. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +415 -0
  210. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +493 -0
  211. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +23 -0
  212. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
  213. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +104 -0
  214. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +334 -0
  215. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +333 -0
  216. data/third_party/abseil-cpp/absl/strings/str_format.h +537 -0
  217. data/third_party/abseil-cpp/absl/strings/string_view.h +19 -11
  218. data/{src/boringssl → third_party/boringssl-with-bazel}/err_data.c +0 -0
  219. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bitstr.c +0 -0
  220. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bool.c +0 -0
  221. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_d2i_fp.c +0 -0
  222. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_dup.c +0 -0
  223. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_enum.c +0 -0
  224. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_gentm.c +0 -0
  225. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_i2d_fp.c +0 -0
  226. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_int.c +0 -0
  227. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_mbstr.c +0 -0
  228. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_object.c +0 -0
  229. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_octet.c +0 -0
  230. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_print.c +0 -0
  231. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_strnid.c +0 -0
  232. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_time.c +3 -4
  233. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_type.c +0 -0
  234. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utctm.c +0 -0
  235. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utf8.c +0 -0
  236. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_lib.c +0 -0
  237. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_locl.h +0 -0
  238. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_par.c +0 -0
  239. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn_pack.c +0 -0
  240. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_enum.c +0 -0
  241. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_int.c +0 -0
  242. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_string.c +0 -0
  243. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_dec.c +0 -0
  244. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_enc.c +0 -0
  245. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_fre.c +0 -0
  246. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_new.c +0 -0
  247. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_typ.c +0 -0
  248. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_utl.c +0 -0
  249. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/time_support.c +0 -0
  250. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/base64/base64.c +0 -0
  251. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio.c +0 -0
  252. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio_mem.c +0 -0
  253. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/connect.c +3 -4
  254. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/fd.c +0 -1
  255. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/file.c +5 -6
  256. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/hexdump.c +0 -0
  257. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/internal.h +0 -0
  258. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/pair.c +0 -1
  259. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/printf.c +0 -0
  260. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket.c +0 -0
  261. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket_helper.c +0 -0
  262. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/bn_asn1.c +0 -0
  263. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/convert.c +0 -0
  264. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/buf/buf.c +10 -69
  265. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/asn1_compat.c +0 -0
  266. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/ber.c +0 -0
  267. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbb.c +41 -2
  268. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbs.c +60 -3
  269. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/internal.h +0 -0
  270. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/unicode.c +0 -0
  271. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/chacha.c +0 -0
  272. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/internal.h +0 -0
  273. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/cipher_extra.c +0 -0
  274. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/derive_key.c +0 -0
  275. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesccm.c +0 -0
  276. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesctrhmac.c +0 -0
  277. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesgcmsiv.c +8 -0
  278. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_chacha20poly1305.c +0 -0
  279. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_null.c +0 -0
  280. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc2.c +0 -0
  281. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc4.c +0 -0
  282. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_tls.c +0 -0
  283. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/internal.h +0 -0
  284. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/tls_cbc.c +0 -0
  285. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cmac/cmac.c +0 -0
  286. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf.c +0 -0
  287. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf_def.h +0 -0
  288. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/internal.h +0 -0
  289. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-fuchsia.c +0 -0
  290. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-linux.c +0 -0
  291. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.c +0 -1
  292. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.h +0 -0
  293. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm.c +0 -0
  294. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-intel.c +0 -0
  295. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-ppc64le.c +0 -0
  296. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/crypto.c +0 -0
  297. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/curve25519/spake25519.c +0 -0
  298. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/check.c +3 -3
  299. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh.c +1 -2
  300. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh_asn1.c +0 -0
  301. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/params.c +0 -0
  302. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/digest_extra/digest_extra.c +0 -0
  303. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa.c +0 -0
  304. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa_asn1.c +0 -0
  305. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_asn1.c +0 -0
  306. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_derive.c +2 -3
  307. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdh_extra/ecdh_extra.c +0 -0
  308. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdsa_extra/ecdsa_asn1.c +0 -0
  309. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/engine/engine.c +0 -0
  310. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/err.c +6 -6
  311. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/internal.h +0 -0
  312. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/digestsign.c +0 -0
  313. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp.c +0 -0
  314. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_asn1.c +0 -0
  315. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_ctx.c +0 -0
  316. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/internal.h +0 -0
  317. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_dsa_asn1.c +0 -0
  318. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec.c +0 -1
  319. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec_asn1.c +0 -0
  320. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519.c +0 -0
  321. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519_asn1.c +0 -0
  322. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa.c +14 -2
  323. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa_asn1.c +0 -0
  324. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519.c +0 -0
  325. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519_asn1.c +1 -2
  326. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/pbkdf.c +0 -0
  327. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/print.c +0 -0
  328. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/scrypt.c +0 -0
  329. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/sign.c +0 -0
  330. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ex_data.c +0 -0
  331. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +108 -0
  332. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1282 -0
  333. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/internal.h +5 -7
  334. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/key_wrap.c +0 -0
  335. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/mode_wrappers.c +0 -2
  336. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bcm.c +2 -0
  337. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/add.c +0 -0
  338. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -0
  339. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bn.c +0 -0
  340. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bytes.c +0 -0
  341. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/cmp.c +0 -0
  342. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/ctx.c +0 -0
  343. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div.c +0 -0
  344. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div_extra.c +0 -0
  345. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/exponentiation.c +0 -0
  346. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd.c +0 -0
  347. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd_extra.c +0 -0
  348. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/generic.c +0 -0
  349. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/internal.h +0 -0
  350. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/jacobi.c +0 -0
  351. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery.c +0 -0
  352. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery_inv.c +0 -0
  353. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/mul.c +0 -0
  354. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/prime.c +11 -12
  355. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/random.c +0 -0
  356. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.c +0 -0
  357. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.h +0 -0
  358. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/shift.c +0 -0
  359. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/sqrt.c +0 -0
  360. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/aead.c +0 -0
  361. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/cipher.c +0 -0
  362. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_aes.c +3 -5
  363. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_des.c +0 -0
  364. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/internal.h +0 -0
  365. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/delocate.h +0 -0
  366. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/des.c +0 -0
  367. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/internal.h +0 -0
  368. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digest.c +0 -0
  369. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digests.c +0 -0
  370. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/internal.h +0 -0
  371. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/md32_common.h +0 -0
  372. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec.c +0 -0
  373. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_key.c +1 -1
  374. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_montgomery.c +0 -0
  375. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/felem.c +0 -0
  376. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/internal.h +0 -0
  377. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/oct.c +0 -0
  378. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p224-64.c +0 -0
  379. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64-table.h +0 -0
  380. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.c +0 -0
  381. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.h +0 -0
  382. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/scalar.c +0 -0
  383. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/simple.c +0 -0
  384. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/simple_mul.c +0 -0
  385. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/util.c +0 -0
  386. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/wnaf.c +0 -0
  387. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdh/ecdh.c +0 -0
  388. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdsa/ecdsa.c +0 -0
  389. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/fips_shared_support.c +0 -0
  390. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/hmac/hmac.c +0 -0
  391. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/is_fips.c +0 -0
  392. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md4/md4.c +0 -0
  393. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/internal.h +0 -0
  394. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/md5.c +0 -0
  395. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cbc.c +0 -0
  396. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cfb.c +0 -0
  397. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ctr.c +0 -0
  398. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/gcm.c +45 -193
  399. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +304 -0
  400. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/internal.h +8 -18
  401. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ofb.c +0 -0
  402. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/polyval.c +0 -0
  403. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/ctrdrbg.c +0 -0
  404. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/internal.h +0 -0
  405. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/rand.c +0 -0
  406. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/urandom.c +0 -0
  407. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/blinding.c +0 -0
  408. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/internal.h +0 -0
  409. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/padding.c +0 -0
  410. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa.c +7 -1
  411. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa_impl.c +60 -51
  412. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/self_check/self_check.c +0 -0
  413. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/internal.h +0 -0
  414. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1-altivec.c +0 -0
  415. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1.c +0 -0
  416. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha256.c +0 -0
  417. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha512.c +0 -0
  418. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/internal.h +0 -0
  419. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/kdf.c +0 -0
  420. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hkdf/hkdf.c +0 -0
  421. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/hrss.c +210 -311
  422. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/internal.h +0 -1
  423. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/internal.h +21 -1
  424. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/lhash/lhash.c +0 -0
  425. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/mem.c +70 -0
  426. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj.c +16 -21
  427. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_dat.h +27 -6
  428. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_xref.c +0 -0
  429. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_all.c +0 -0
  430. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_info.c +0 -1
  431. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_lib.c +7 -7
  432. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_oth.c +0 -1
  433. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pk8.c +0 -1
  434. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pkey.c +0 -1
  435. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_x509.c +0 -0
  436. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_xaux.c +0 -0
  437. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/internal.h +0 -0
  438. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7.c +0 -0
  439. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7_x509.c +1 -1
  440. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/internal.h +0 -0
  441. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/p5_pbev2.c +0 -0
  442. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8.c +0 -0
  443. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8_x509.c +0 -0
  444. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/internal.h +0 -0
  445. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305.c +2 -2
  446. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_arm.c +21 -20
  447. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_vec.c +34 -17
  448. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/internal.h +0 -0
  449. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/pool.c +1 -2
  450. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/deterministic.c +0 -0
  451. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/forkunsafe.c +0 -0
  452. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/fuchsia.c +0 -0
  453. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/rand_extra.c +0 -0
  454. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/windows.c +0 -0
  455. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rc4/rc4.c +0 -0
  456. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_c11.c +0 -0
  457. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_lock.c +0 -0
  458. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_asn1.c +0 -0
  459. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_print.c +0 -0
  460. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/siphash/siphash.c +3 -1
  461. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/stack/stack.c +0 -0
  462. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread.c +0 -0
  463. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_none.c +0 -0
  464. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_pthread.c +0 -0
  465. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_win.c +0 -0
  466. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_digest.c +0 -0
  467. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_sign.c +0 -0
  468. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_strex.c +0 -0
  469. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_verify.c +0 -1
  470. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/algorithm.c +0 -0
  471. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/asn1_gen.c +0 -0
  472. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_dir.c +1 -1
  473. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_file.c +0 -1
  474. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/charmap.h +0 -0
  475. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/i2d_pr.c +0 -0
  476. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/internal.h +0 -0
  477. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/rsa_pss.c +0 -0
  478. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_crl.c +0 -0
  479. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_req.c +0 -0
  480. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509.c +0 -0
  481. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509a.c +0 -0
  482. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/vpm_int.h +0 -0
  483. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509.c +0 -0
  484. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_att.c +0 -0
  485. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_cmp.c +0 -1
  486. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_d2.c +0 -0
  487. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_def.c +0 -0
  488. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_ext.c +0 -0
  489. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_lu.c +0 -0
  490. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_obj.c +1 -1
  491. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_r2x.c +0 -1
  492. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_req.c +0 -1
  493. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_set.c +0 -0
  494. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_trs.c +1 -2
  495. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_txt.c +0 -0
  496. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_v3.c +0 -0
  497. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vfy.c +0 -1
  498. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vpm.c +3 -4
  499. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509cset.c +0 -0
  500. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509name.c +0 -0
  501. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509rset.c +0 -0
  502. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509spki.c +0 -0
  503. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_algor.c +0 -0
  504. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_all.c +0 -1
  505. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_attrib.c +0 -0
  506. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_crl.c +0 -0
  507. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_exten.c +0 -0
  508. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_info.c +0 -0
  509. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_name.c +0 -0
  510. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pkey.c +0 -0
  511. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pubkey.c +0 -0
  512. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_req.c +0 -0
  513. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_sig.c +0 -0
  514. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_spki.c +0 -0
  515. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_val.c +0 -0
  516. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509.c +0 -0
  517. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509a.c +0 -0
  518. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/ext_dat.h +0 -0
  519. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/internal.h +0 -0
  520. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_cache.c +0 -0
  521. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_data.c +0 -0
  522. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_int.h +0 -0
  523. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_lib.c +0 -0
  524. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_map.c +0 -0
  525. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_node.c +0 -0
  526. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_tree.c +0 -0
  527. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akey.c +0 -0
  528. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akeya.c +0 -0
  529. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_alt.c +3 -3
  530. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bcons.c +0 -0
  531. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bitst.c +0 -0
  532. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_conf.c +0 -0
  533. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_cpols.c +0 -0
  534. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_crld.c +0 -0
  535. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_enum.c +2 -2
  536. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_extku.c +0 -0
  537. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_genn.c +0 -0
  538. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ia5.c +0 -0
  539. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_info.c +4 -5
  540. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_int.c +0 -0
  541. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_lib.c +0 -0
  542. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ncons.c +0 -0
  543. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ocsp.c +0 -0
  544. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pci.c +0 -0
  545. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcia.c +0 -0
  546. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcons.c +0 -0
  547. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pku.c +0 -0
  548. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pmaps.c +0 -0
  549. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_prn.c +0 -0
  550. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_purp.c +2 -3
  551. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_skey.c +0 -0
  552. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_sxnet.c +0 -0
  553. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_utl.c +11 -12
  554. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aead.h +0 -0
  555. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aes.h +0 -0
  556. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/arm_arch.h +0 -0
  557. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1.h +0 -0
  558. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1_mac.h +0 -0
  559. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1t.h +0 -0
  560. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base.h +0 -0
  561. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base64.h +0 -0
  562. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bio.h +0 -0
  563. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/blowfish.h +0 -0
  564. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bn.h +32 -20
  565. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buf.h +9 -9
  566. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buffer.h +0 -0
  567. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bytestring.h +34 -0
  568. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cast.h +0 -0
  569. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/chacha.h +0 -0
  570. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cipher.h +0 -0
  571. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cmac.h +0 -0
  572. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/conf.h +0 -0
  573. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cpu.h +0 -0
  574. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/crypto.h +0 -0
  575. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/curve25519.h +0 -0
  576. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/des.h +0 -0
  577. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dh.h +0 -0
  578. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/digest.h +0 -0
  579. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dsa.h +0 -0
  580. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dtls1.h +0 -0
  581. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/e_os2.h +0 -0
  582. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec.h +11 -4
  583. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec_key.h +4 -2
  584. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdh.h +0 -0
  585. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdsa.h +0 -0
  586. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/engine.h +0 -0
  587. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/err.h +11 -9
  588. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/evp.h +20 -0
  589. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ex_data.h +0 -0
  590. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hkdf.h +0 -0
  591. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hmac.h +0 -0
  592. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hrss.h +0 -0
  593. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/is_boringssl.h +0 -0
  594. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/lhash.h +0 -0
  595. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md4.h +0 -0
  596. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md5.h +0 -0
  597. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/mem.h +17 -2
  598. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/nid.h +9 -0
  599. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj.h +0 -0
  600. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj_mac.h +0 -0
  601. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/objects.h +0 -0
  602. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslconf.h +0 -0
  603. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslv.h +0 -0
  604. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ossl_typ.h +0 -0
  605. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pem.h +0 -0
  606. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs12.h +0 -0
  607. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs7.h +0 -0
  608. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs8.h +0 -0
  609. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/poly1305.h +5 -7
  610. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pool.h +0 -0
  611. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rand.h +0 -0
  612. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rc4.h +0 -0
  613. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ripemd.h +0 -0
  614. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rsa.h +0 -0
  615. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/safestack.h +0 -0
  616. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/sha.h +0 -0
  617. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/siphash.h +0 -0
  618. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/span.h +0 -0
  619. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/srtp.h +0 -0
  620. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl.h +10 -20
  621. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl3.h +0 -0
  622. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/stack.h +0 -0
  623. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/thread.h +0 -0
  624. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/tls1.h +0 -3
  625. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/type_check.h +0 -0
  626. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509.h +0 -0
  627. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509_vfy.h +0 -0
  628. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509v3.h +0 -0
  629. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/bio_ssl.cc +0 -0
  630. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_both.cc +0 -1
  631. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_lib.cc +0 -0
  632. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_pkt.cc +0 -1
  633. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_srtp.cc +0 -0
  634. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_method.cc +0 -1
  635. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_record.cc +0 -0
  636. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handoff.cc +126 -29
  637. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake.cc +5 -4
  638. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_client.cc +24 -13
  639. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_server.cc +1 -5
  640. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/internal.h +32 -26
  641. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_both.cc +0 -0
  642. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_lib.cc +2 -3
  643. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_pkt.cc +0 -1
  644. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_aead_ctx.cc +0 -0
  645. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_asn1.cc +1 -2
  646. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_buffer.cc +34 -15
  647. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cert.cc +0 -1
  648. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cipher.cc +0 -1
  649. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_file.cc +0 -0
  650. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_key_share.cc +0 -0
  651. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_lib.cc +13 -14
  652. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_privkey.cc +0 -0
  653. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_session.cc +2 -1
  654. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_stat.cc +0 -0
  655. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_transcript.cc +0 -0
  656. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_versions.cc +1 -1
  657. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_x509.cc +0 -0
  658. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_enc.cc +0 -0
  659. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_lib.cc +11 -171
  660. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_both.cc +0 -0
  661. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_client.cc +3 -4
  662. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_enc.cc +5 -1
  663. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_server.cc +78 -101
  664. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_method.cc +1 -1
  665. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_record.cc +7 -2
  666. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519.c +0 -0
  667. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_32.h +0 -0
  668. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_64.h +0 -0
  669. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_tables.h +0 -0
  670. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/internal.h +0 -0
  671. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256.c +0 -0
  672. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256_32.h +0 -0
  673. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256_64.h +0 -0
  674. metadata +562 -491
  675. data/src/core/lib/iomgr/logical_thread.cc +0 -103
  676. data/src/core/lib/iomgr/logical_thread.h +0 -52
  677. data/src/core/lib/json/json.cc +0 -94
  678. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +0 -860
@@ -34,188 +34,226 @@
34
34
 
35
35
  namespace grpc_core {
36
36
 
37
- constexpr char kCdsTypeUrl[] = "type.googleapis.com/envoy.api.v2.Cluster";
38
- constexpr char kEdsTypeUrl[] =
39
- "type.googleapis.com/envoy.api.v2.ClusterLoadAssignment";
40
-
41
- // The version state for each specific ADS resource type.
42
- struct VersionState {
43
- // The version of the latest response that is accepted and used.
44
- std::string version_info;
45
- // The nonce of the latest response.
46
- std::string nonce;
47
- // The error message to be included in a NACK with the nonce. Consumed when a
48
- // nonce is NACK'ed for the first time.
49
- grpc_error* error = GRPC_ERROR_NONE;
50
-
51
- ~VersionState() { GRPC_ERROR_UNREF(error); }
52
- };
37
+ class XdsApi {
38
+ public:
39
+ static const char* kLdsTypeUrl;
40
+ static const char* kRdsTypeUrl;
41
+ static const char* kCdsTypeUrl;
42
+ static const char* kEdsTypeUrl;
43
+
44
+ struct RdsUpdate {
45
+ // The name to use in the CDS request.
46
+ std::string cluster_name;
47
+ };
53
48
 
54
- struct CdsUpdate {
55
- // The name to use in the EDS request.
56
- // If empty, the cluster name will be used.
57
- std::string eds_service_name;
58
- // The LRS server to use for load reporting.
59
- // If not set, load reporting will be disabled.
60
- // If set to the empty string, will use the same server we obtained the CDS
61
- // data from.
62
- Optional<std::string> lrs_load_reporting_server_name;
63
- };
49
+ struct LdsUpdate {
50
+ // The name to use in the RDS request.
51
+ std::string route_config_name;
52
+ // The name to use in the CDS request. Present if the LDS response has it
53
+ // inlined.
54
+ Optional<RdsUpdate> rds_update;
55
+ };
64
56
 
65
- using CdsUpdateMap = std::map<std::string /*cluster_name*/, CdsUpdate>;
57
+ using LdsUpdateMap = std::map<std::string /*server_name*/, LdsUpdate>;
66
58
 
67
- class XdsPriorityListUpdate {
68
- public:
69
- struct LocalityMap {
70
- struct Locality {
71
- bool operator==(const Locality& other) const {
72
- return *name == *other.name && serverlist == other.serverlist &&
73
- lb_weight == other.lb_weight && priority == other.priority;
74
- }
59
+ using RdsUpdateMap = std::map<std::string /*route_config_name*/, RdsUpdate>;
60
+
61
+ struct CdsUpdate {
62
+ // The name to use in the EDS request.
63
+ // If empty, the cluster name will be used.
64
+ std::string eds_service_name;
65
+ // The LRS server to use for load reporting.
66
+ // If not set, load reporting will be disabled.
67
+ // If set to the empty string, will use the same server we obtained the CDS
68
+ // data from.
69
+ Optional<std::string> lrs_load_reporting_server_name;
70
+ };
75
71
 
76
- // This comparator only compares the locality names.
77
- struct Less {
78
- bool operator()(const Locality& lhs, const Locality& rhs) const {
79
- return XdsLocalityName::Less()(lhs.name, rhs.name);
72
+ using CdsUpdateMap = std::map<std::string /*cluster_name*/, CdsUpdate>;
73
+
74
+ class PriorityListUpdate {
75
+ public:
76
+ struct LocalityMap {
77
+ struct Locality {
78
+ bool operator==(const Locality& other) const {
79
+ return *name == *other.name && serverlist == other.serverlist &&
80
+ lb_weight == other.lb_weight && priority == other.priority;
80
81
  }
82
+
83
+ // This comparator only compares the locality names.
84
+ struct Less {
85
+ bool operator()(const Locality& lhs, const Locality& rhs) const {
86
+ return XdsLocalityName::Less()(lhs.name, rhs.name);
87
+ }
88
+ };
89
+
90
+ RefCountedPtr<XdsLocalityName> name;
91
+ ServerAddressList serverlist;
92
+ uint32_t lb_weight;
93
+ uint32_t priority;
81
94
  };
82
95
 
83
- RefCountedPtr<XdsLocalityName> name;
84
- ServerAddressList serverlist;
85
- uint32_t lb_weight;
86
- uint32_t priority;
96
+ bool Contains(const RefCountedPtr<XdsLocalityName>& name) const {
97
+ return localities.find(name) != localities.end();
98
+ }
99
+
100
+ size_t size() const { return localities.size(); }
101
+
102
+ std::map<RefCountedPtr<XdsLocalityName>, Locality, XdsLocalityName::Less>
103
+ localities;
87
104
  };
88
105
 
89
- bool Contains(const RefCountedPtr<XdsLocalityName>& name) const {
90
- return localities.find(name) != localities.end();
106
+ bool operator==(const PriorityListUpdate& other) const;
107
+ bool operator!=(const PriorityListUpdate& other) const {
108
+ return !(*this == other);
91
109
  }
92
110
 
93
- size_t size() const { return localities.size(); }
111
+ void Add(LocalityMap::Locality locality);
94
112
 
95
- std::map<RefCountedPtr<XdsLocalityName>, Locality, XdsLocalityName::Less>
96
- localities;
97
- };
113
+ const LocalityMap* Find(uint32_t priority) const;
98
114
 
99
- bool operator==(const XdsPriorityListUpdate& other) const;
100
- bool operator!=(const XdsPriorityListUpdate& other) const {
101
- return !(*this == other);
102
- }
115
+ bool Contains(uint32_t priority) const {
116
+ return priority < priorities_.size();
117
+ }
118
+ bool Contains(const RefCountedPtr<XdsLocalityName>& name);
103
119
 
104
- void Add(LocalityMap::Locality locality);
120
+ bool empty() const { return priorities_.empty(); }
121
+ size_t size() const { return priorities_.size(); }
105
122
 
106
- const LocalityMap* Find(uint32_t priority) const;
123
+ // Callers should make sure the priority list is non-empty.
124
+ uint32_t LowestPriority() const {
125
+ return static_cast<uint32_t>(priorities_.size()) - 1;
126
+ }
107
127
 
108
- bool Contains(uint32_t priority) const {
109
- return priority < priorities_.size();
110
- }
111
- bool Contains(const RefCountedPtr<XdsLocalityName>& name);
128
+ private:
129
+ InlinedVector<LocalityMap, 2> priorities_;
130
+ };
112
131
 
113
- bool empty() const { return priorities_.empty(); }
114
- size_t size() const { return priorities_.size(); }
132
+ // There are two phases of accessing this class's content:
133
+ // 1. to initialize in the control plane combiner;
134
+ // 2. to use in the data plane combiner.
135
+ // So no additional synchronization is needed.
136
+ class DropConfig : public RefCounted<DropConfig> {
137
+ public:
138
+ struct DropCategory {
139
+ bool operator==(const DropCategory& other) const {
140
+ return name == other.name &&
141
+ parts_per_million == other.parts_per_million;
142
+ }
115
143
 
116
- // Callers should make sure the priority list is non-empty.
117
- uint32_t LowestPriority() const {
118
- return static_cast<uint32_t>(priorities_.size()) - 1;
119
- }
144
+ std::string name;
145
+ const uint32_t parts_per_million;
146
+ };
120
147
 
121
- private:
122
- InlinedVector<LocalityMap, 2> priorities_;
123
- };
148
+ using DropCategoryList = InlinedVector<DropCategory, 2>;
124
149
 
125
- // There are two phases of accessing this class's content:
126
- // 1. to initialize in the control plane combiner;
127
- // 2. to use in the data plane combiner.
128
- // So no additional synchronization is needed.
129
- class XdsDropConfig : public RefCounted<XdsDropConfig> {
130
- public:
131
- struct DropCategory {
132
- bool operator==(const DropCategory& other) const {
133
- return name == other.name && parts_per_million == other.parts_per_million;
150
+ void AddCategory(std::string name, uint32_t parts_per_million) {
151
+ drop_category_list_.emplace_back(
152
+ DropCategory{std::move(name), parts_per_million});
134
153
  }
135
154
 
136
- std::string name;
137
- const uint32_t parts_per_million;
138
- };
155
+ // The only method invoked from the data plane combiner.
156
+ bool ShouldDrop(const std::string** category_name) const;
157
+
158
+ const DropCategoryList& drop_category_list() const {
159
+ return drop_category_list_;
160
+ }
139
161
 
140
- using DropCategoryList = InlinedVector<DropCategory, 2>;
162
+ bool operator==(const DropConfig& other) const {
163
+ return drop_category_list_ == other.drop_category_list_;
164
+ }
165
+ bool operator!=(const DropConfig& other) const { return !(*this == other); }
141
166
 
142
- void AddCategory(std::string name, uint32_t parts_per_million) {
143
- drop_category_list_.emplace_back(
144
- DropCategory{std::move(name), parts_per_million});
145
- }
167
+ private:
168
+ DropCategoryList drop_category_list_;
169
+ };
146
170
 
147
- // The only method invoked from the data plane combiner.
148
- bool ShouldDrop(const std::string** category_name) const;
171
+ struct EdsUpdate {
172
+ PriorityListUpdate priority_list_update;
173
+ RefCountedPtr<DropConfig> drop_config;
174
+ bool drop_all = false;
175
+ };
149
176
 
150
- const DropCategoryList& drop_category_list() const {
151
- return drop_category_list_;
152
- }
177
+ using EdsUpdateMap = std::map<std::string /*eds_service_name*/, EdsUpdate>;
153
178
 
154
- bool operator==(const XdsDropConfig& other) const {
155
- return drop_category_list_ == other.drop_category_list_;
156
- }
157
- bool operator!=(const XdsDropConfig& other) const {
158
- return !(*this == other);
159
- }
179
+ struct ClusterLoadReport {
180
+ XdsClusterDropStats::DroppedRequestsMap dropped_requests;
181
+ std::map<XdsLocalityName*, XdsClusterLocalityStats::Snapshot,
182
+ XdsLocalityName::Less>
183
+ locality_stats;
184
+ grpc_millis load_report_interval;
185
+ };
186
+ using ClusterLoadReportMap = std::map<
187
+ std::pair<std::string /*cluster_name*/, std::string /*eds_service_name*/>,
188
+ ClusterLoadReport>;
189
+
190
+ explicit XdsApi(const XdsBootstrap::Node* node);
191
+
192
+ // Creates a request to nack an unsupported resource type.
193
+ // Takes ownership of \a error.
194
+ grpc_slice CreateUnsupportedTypeNackRequest(const std::string& type_url,
195
+ const std::string& nonce,
196
+ grpc_error* error);
197
+
198
+ // Creates an LDS request querying \a server_name.
199
+ // Takes ownership of \a error.
200
+ grpc_slice CreateLdsRequest(const std::string& server_name,
201
+ const std::string& version,
202
+ const std::string& nonce, grpc_error* error,
203
+ bool populate_node);
204
+
205
+ // Creates an RDS request querying \a route_config_name.
206
+ // Takes ownership of \a error.
207
+ grpc_slice CreateRdsRequest(const std::string& route_config_name,
208
+ const std::string& version,
209
+ const std::string& nonce, grpc_error* error,
210
+ bool populate_node);
211
+
212
+ // Creates a CDS request querying \a cluster_names.
213
+ // Takes ownership of \a error.
214
+ grpc_slice CreateCdsRequest(const std::set<StringView>& cluster_names,
215
+ const std::string& version,
216
+ const std::string& nonce, grpc_error* error,
217
+ bool populate_node);
218
+
219
+ // Creates an EDS request querying \a eds_service_names.
220
+ // Takes ownership of \a error.
221
+ grpc_slice CreateEdsRequest(const std::set<StringView>& eds_service_names,
222
+ const std::string& version,
223
+ const std::string& nonce, grpc_error* error,
224
+ bool populate_node);
225
+
226
+ // Parses the ADS response and outputs the validated update for either CDS or
227
+ // EDS. If the response can't be parsed at the top level, \a type_url will
228
+ // point to an empty string; otherwise, it will point to the received data.
229
+ grpc_error* ParseAdsResponse(
230
+ const grpc_slice& encoded_response,
231
+ const std::string& expected_server_name,
232
+ const std::string& expected_route_config_name,
233
+ const std::set<StringView>& expected_eds_service_names,
234
+ LdsUpdate* lds_update, RdsUpdate* rds_update,
235
+ CdsUpdateMap* cds_update_map, EdsUpdateMap* eds_update_map,
236
+ std::string* version, std::string* nonce, std::string* type_url);
237
+
238
+ // Creates an LRS request querying \a server_name.
239
+ grpc_slice CreateLrsInitialRequest(const std::string& server_name);
240
+
241
+ // Creates an LRS request sending a client-side load report.
242
+ grpc_slice CreateLrsRequest(ClusterLoadReportMap cluster_load_report_map);
243
+
244
+ // Parses the LRS response and returns \a
245
+ // load_reporting_interval for client-side load reporting. If there is any
246
+ // error, the output config is invalid.
247
+ grpc_error* ParseLrsResponse(const grpc_slice& encoded_response,
248
+ std::set<std::string>* cluster_names,
249
+ grpc_millis* load_reporting_interval);
160
250
 
161
251
  private:
162
- DropCategoryList drop_category_list_;
163
- };
164
-
165
- struct EdsUpdate {
166
- XdsPriorityListUpdate priority_list_update;
167
- RefCountedPtr<XdsDropConfig> drop_config;
168
- bool drop_all = false;
252
+ const XdsBootstrap::Node* node_;
253
+ const std::string build_version_;
254
+ const std::string user_agent_name_;
169
255
  };
170
256
 
171
- using EdsUpdateMap = std::map<std::string /*eds_service_name*/, EdsUpdate>;
172
-
173
- // Creates a request to nack an unsupported resource type.
174
- // Takes ownership of \a error.
175
- grpc_slice XdsUnsupportedTypeNackRequestCreateAndEncode(
176
- const std::string& type_url, const std::string& nonce, grpc_error* error);
177
-
178
- // Creates a CDS request querying \a cluster_names.
179
- // Takes ownership of \a error.
180
- grpc_slice XdsCdsRequestCreateAndEncode(
181
- const std::set<StringView>& cluster_names, const XdsBootstrap::Node* node,
182
- const char* build_version, const std::string& version,
183
- const std::string& nonce, grpc_error* error);
184
-
185
- // Creates an EDS request querying \a eds_service_names.
186
- // Takes ownership of \a error.
187
- grpc_slice XdsEdsRequestCreateAndEncode(
188
- const std::set<StringView>& eds_service_names,
189
- const XdsBootstrap::Node* node, const char* build_version,
190
- const std::string& version, const std::string& nonce, grpc_error* error);
191
-
192
- // Parses the ADS response and outputs the validated update for either CDS or
193
- // EDS. If the response can't be parsed at the top level, \a type_url will point
194
- // to an empty string; otherwise, it will point to the received data.
195
- grpc_error* XdsAdsResponseDecodeAndParse(
196
- const grpc_slice& encoded_response,
197
- const std::set<StringView>& expected_eds_service_names,
198
- CdsUpdateMap* cds_update_map, EdsUpdateMap* eds_update_map,
199
- std::string* version, std::string* nonce, std::string* type_url);
200
-
201
- // Creates an LRS request querying \a server_name.
202
- grpc_slice XdsLrsRequestCreateAndEncode(const std::string& server_name,
203
- const XdsBootstrap::Node* node,
204
- const char* build_version);
205
-
206
- // Creates an LRS request sending client-side load reports. If all the counters
207
- // are zero, returns empty slice.
208
- grpc_slice XdsLrsRequestCreateAndEncode(
209
- std::map<StringView /*cluster_name*/, std::set<XdsClientStats*>>
210
- client_stats_map);
211
-
212
- // Parses the LRS response and returns \a
213
- // load_reporting_interval for client-side load reporting. If there is any
214
- // error, the output config is invalid.
215
- grpc_error* XdsLrsResponseDecodeAndParse(const grpc_slice& encoded_response,
216
- std::set<std::string>* cluster_names,
217
- grpc_millis* load_reporting_interval);
218
-
219
257
  } // namespace grpc_core
220
258
 
221
259
  #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_XDS_XDS_API_H */
@@ -39,86 +39,55 @@ std::unique_ptr<XdsBootstrap> XdsBootstrap::ReadFromFile(grpc_error** error) {
39
39
  grpc_slice contents;
40
40
  *error = grpc_load_file(path.get(), /*add_null_terminator=*/true, &contents);
41
41
  if (*error != GRPC_ERROR_NONE) return nullptr;
42
- return MakeUnique<XdsBootstrap>(contents, error);
42
+ Json json = Json::Parse(StringViewFromSlice(contents), error);
43
+ grpc_slice_unref_internal(contents);
44
+ if (*error != GRPC_ERROR_NONE) return nullptr;
45
+ return absl::make_unique<XdsBootstrap>(std::move(json), error);
43
46
  }
44
47
 
45
- XdsBootstrap::XdsBootstrap(grpc_slice contents, grpc_error** error)
46
- : contents_(contents) {
47
- tree_ = grpc_json_parse_string_with_len(
48
- reinterpret_cast<char*>(GPR_SLICE_START_PTR(contents_)),
49
- GPR_SLICE_LENGTH(contents_));
50
- if (tree_ == nullptr) {
51
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
52
- "failed to parse bootstrap file JSON");
53
- return;
54
- }
55
- if (tree_->type != GRPC_JSON_OBJECT || tree_->key != nullptr) {
48
+ XdsBootstrap::XdsBootstrap(Json json, grpc_error** error) {
49
+ if (json.type() != Json::Type::OBJECT) {
56
50
  *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
57
51
  "malformed JSON in bootstrap file");
58
52
  return;
59
53
  }
60
54
  InlinedVector<grpc_error*, 1> error_list;
61
- bool seen_xds_servers = false;
62
- bool seen_node = false;
63
- for (grpc_json* child = tree_->child; child != nullptr; child = child->next) {
64
- if (child->key == nullptr) {
65
- error_list.push_back(
66
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("JSON key is null"));
67
- } else if (strcmp(child->key, "xds_servers") == 0) {
68
- if (child->type != GRPC_JSON_ARRAY) {
69
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
70
- "\"xds_servers\" field is not an array"));
71
- }
72
- if (seen_xds_servers) {
73
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
74
- "duplicate \"xds_servers\" field"));
75
- }
76
- seen_xds_servers = true;
77
- grpc_error* parse_error = ParseXdsServerList(child);
78
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
79
- } else if (strcmp(child->key, "node") == 0) {
80
- if (child->type != GRPC_JSON_OBJECT) {
81
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
82
- "\"node\" field is not an object"));
83
- }
84
- if (seen_node) {
85
- error_list.push_back(
86
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("duplicate \"node\" field"));
87
- }
88
- seen_node = true;
89
- grpc_error* parse_error = ParseNode(child);
90
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
91
- }
92
- }
93
- if (!seen_xds_servers) {
55
+ auto it = json.mutable_object()->find("xds_servers");
56
+ if (it == json.mutable_object()->end()) {
94
57
  error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
95
58
  "\"xds_servers\" field not present"));
59
+ } else if (it->second.type() != Json::Type::ARRAY) {
60
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
61
+ "\"xds_servers\" field is not an array"));
62
+ } else {
63
+ grpc_error* parse_error = ParseXdsServerList(&it->second);
64
+ if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
65
+ }
66
+ it = json.mutable_object()->find("node");
67
+ if (it != json.mutable_object()->end()) {
68
+ if (it->second.type() != Json::Type::OBJECT) {
69
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
70
+ "\"node\" field is not an object"));
71
+ } else {
72
+ grpc_error* parse_error = ParseNode(&it->second);
73
+ if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
74
+ }
96
75
  }
97
76
  *error = GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing xds bootstrap file",
98
77
  &error_list);
99
78
  }
100
79
 
101
- XdsBootstrap::~XdsBootstrap() {
102
- grpc_json_destroy(tree_);
103
- grpc_slice_unref_internal(contents_);
104
- }
105
-
106
- grpc_error* XdsBootstrap::ParseXdsServerList(grpc_json* json) {
80
+ grpc_error* XdsBootstrap::ParseXdsServerList(Json* json) {
107
81
  InlinedVector<grpc_error*, 1> error_list;
108
- size_t idx = 0;
109
- for (grpc_json *child = json->child; child != nullptr;
110
- child = child->next, ++idx) {
111
- if (child->key != nullptr) {
112
- char* msg;
113
- gpr_asprintf(&msg, "array element %" PRIuPTR " key is not null", idx);
114
- error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg));
115
- }
116
- if (child->type != GRPC_JSON_OBJECT) {
82
+ for (size_t i = 0; i < json->mutable_array()->size(); ++i) {
83
+ Json& child = json->mutable_array()->at(i);
84
+ if (child.type() != Json::Type::OBJECT) {
117
85
  char* msg;
118
- gpr_asprintf(&msg, "array element %" PRIuPTR " is not an object", idx);
86
+ gpr_asprintf(&msg, "array element %" PRIuPTR " is not an object", i);
119
87
  error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg));
88
+ gpr_free(msg);
120
89
  } else {
121
- grpc_error* parse_error = ParseXdsServer(child, idx);
90
+ grpc_error* parse_error = ParseXdsServer(&child, i);
122
91
  if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
123
92
  }
124
93
  }
@@ -126,42 +95,29 @@ grpc_error* XdsBootstrap::ParseXdsServerList(grpc_json* json) {
126
95
  &error_list);
127
96
  }
128
97
 
129
- grpc_error* XdsBootstrap::ParseXdsServer(grpc_json* json, size_t idx) {
98
+ grpc_error* XdsBootstrap::ParseXdsServer(Json* json, size_t idx) {
130
99
  InlinedVector<grpc_error*, 1> error_list;
131
100
  servers_.emplace_back();
132
101
  XdsServer& server = servers_[servers_.size() - 1];
133
- bool seen_channel_creds = false;
134
- for (grpc_json* child = json->child; child != nullptr; child = child->next) {
135
- if (child->key == nullptr) {
136
- error_list.push_back(
137
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("JSON key is null"));
138
- } else if (strcmp(child->key, "server_uri") == 0) {
139
- if (child->type != GRPC_JSON_STRING) {
140
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
141
- "\"server_uri\" field is not a string"));
142
- }
143
- if (server.server_uri != nullptr) {
144
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
145
- "duplicate \"server_uri\" field"));
146
- }
147
- server.server_uri = child->value;
148
- } else if (strcmp(child->key, "channel_creds") == 0) {
149
- if (child->type != GRPC_JSON_ARRAY) {
150
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
151
- "\"channel_creds\" field is not an array"));
152
- }
153
- if (seen_channel_creds) {
154
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
155
- "duplicate \"channel_creds\" field"));
156
- }
157
- seen_channel_creds = true;
158
- grpc_error* parse_error = ParseChannelCredsArray(child, &server);
159
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
160
- }
161
- }
162
- if (server.server_uri == nullptr) {
102
+ auto it = json->mutable_object()->find("server_uri");
103
+ if (it == json->mutable_object()->end()) {
163
104
  error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
164
105
  "\"server_uri\" field not present"));
106
+ } else if (it->second.type() != Json::Type::STRING) {
107
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
108
+ "\"server_uri\" field is not a string"));
109
+ } else {
110
+ server.server_uri = std::move(*it->second.mutable_string_value());
111
+ }
112
+ it = json->mutable_object()->find("channel_creds");
113
+ if (it != json->mutable_object()->end()) {
114
+ if (it->second.type() != Json::Type::ARRAY) {
115
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
116
+ "\"channel_creds\" field is not an array"));
117
+ } else {
118
+ grpc_error* parse_error = ParseChannelCredsArray(&it->second, &server);
119
+ if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
120
+ }
165
121
  }
166
122
  // Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error
167
123
  // string is not static in this case.
@@ -176,23 +132,18 @@ grpc_error* XdsBootstrap::ParseXdsServer(grpc_json* json, size_t idx) {
176
132
  return error;
177
133
  }
178
134
 
179
- grpc_error* XdsBootstrap::ParseChannelCredsArray(grpc_json* json,
135
+ grpc_error* XdsBootstrap::ParseChannelCredsArray(Json* json,
180
136
  XdsServer* server) {
181
137
  InlinedVector<grpc_error*, 1> error_list;
182
- size_t idx = 0;
183
- for (grpc_json *child = json->child; child != nullptr;
184
- child = child->next, ++idx) {
185
- if (child->key != nullptr) {
138
+ for (size_t i = 0; i < json->mutable_array()->size(); ++i) {
139
+ Json& child = json->mutable_array()->at(i);
140
+ if (child.type() != Json::Type::OBJECT) {
186
141
  char* msg;
187
- gpr_asprintf(&msg, "array element %" PRIuPTR " key is not null", idx);
188
- error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg));
189
- }
190
- if (child->type != GRPC_JSON_OBJECT) {
191
- char* msg;
192
- gpr_asprintf(&msg, "array element %" PRIuPTR " is not an object", idx);
142
+ gpr_asprintf(&msg, "array element %" PRIuPTR " is not an object", i);
193
143
  error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg));
144
+ gpr_free(msg);
194
145
  } else {
195
- grpc_error* parse_error = ParseChannelCreds(child, idx, server);
146
+ grpc_error* parse_error = ParseChannelCreds(&child, i, server);
196
147
  if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
197
148
  }
198
149
  }
@@ -200,38 +151,31 @@ grpc_error* XdsBootstrap::ParseChannelCredsArray(grpc_json* json,
200
151
  &error_list);
201
152
  }
202
153
 
203
- grpc_error* XdsBootstrap::ParseChannelCreds(grpc_json* json, size_t idx,
154
+ grpc_error* XdsBootstrap::ParseChannelCreds(Json* json, size_t idx,
204
155
  XdsServer* server) {
205
156
  InlinedVector<grpc_error*, 1> error_list;
206
157
  ChannelCreds channel_creds;
207
- for (grpc_json* child = json->child; child != nullptr; child = child->next) {
208
- if (child->key == nullptr) {
209
- error_list.push_back(
210
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("JSON key is null"));
211
- } else if (strcmp(child->key, "type") == 0) {
212
- if (child->type != GRPC_JSON_STRING) {
213
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
214
- "\"type\" field is not a string"));
215
- }
216
- if (channel_creds.type != nullptr) {
217
- error_list.push_back(
218
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("duplicate \"type\" field"));
219
- }
220
- channel_creds.type = child->value;
221
- } else if (strcmp(child->key, "config") == 0) {
222
- if (child->type != GRPC_JSON_OBJECT) {
223
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
224
- "\"config\" field is not an object"));
225
- }
226
- if (channel_creds.config != nullptr) {
227
- error_list.push_back(
228
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("duplicate \"config\" field"));
229
- }
230
- channel_creds.config = child;
158
+ auto it = json->mutable_object()->find("type");
159
+ if (it == json->mutable_object()->end()) {
160
+ error_list.push_back(
161
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("\"type\" field not present"));
162
+ } else if (it->second.type() != Json::Type::STRING) {
163
+ error_list.push_back(
164
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("\"type\" field is not a string"));
165
+ } else {
166
+ channel_creds.type = std::move(*it->second.mutable_string_value());
167
+ }
168
+ it = json->mutable_object()->find("config");
169
+ if (it != json->mutable_object()->end()) {
170
+ if (it->second.type() != Json::Type::OBJECT) {
171
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
172
+ "\"config\" field is not an object"));
173
+ } else {
174
+ channel_creds.config = std::move(it->second);
231
175
  }
232
176
  }
233
- if (channel_creds.type != nullptr) {
234
- server->channel_creds.push_back(channel_creds);
177
+ if (!channel_creds.type.empty()) {
178
+ server->channel_creds.emplace_back(std::move(channel_creds));
235
179
  }
236
180
  // Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error
237
181
  // string is not static in this case.
@@ -246,242 +190,81 @@ grpc_error* XdsBootstrap::ParseChannelCreds(grpc_json* json, size_t idx,
246
190
  return error;
247
191
  }
248
192
 
249
- grpc_error* XdsBootstrap::ParseNode(grpc_json* json) {
193
+ grpc_error* XdsBootstrap::ParseNode(Json* json) {
250
194
  InlinedVector<grpc_error*, 1> error_list;
251
- node_ = MakeUnique<Node>();
252
- bool seen_metadata = false;
253
- bool seen_locality = false;
254
- for (grpc_json* child = json->child; child != nullptr; child = child->next) {
255
- if (child->key == nullptr) {
195
+ node_ = absl::make_unique<Node>();
196
+ auto it = json->mutable_object()->find("id");
197
+ if (it != json->mutable_object()->end()) {
198
+ if (it->second.type() != Json::Type::STRING) {
256
199
  error_list.push_back(
257
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("JSON key is null"));
258
- } else if (strcmp(child->key, "id") == 0) {
259
- if (child->type != GRPC_JSON_STRING) {
260
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
261
- "\"id\" field is not a string"));
262
- }
263
- if (node_->id != nullptr) {
264
- error_list.push_back(
265
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("duplicate \"id\" field"));
266
- }
267
- node_->id = child->value;
268
- } else if (strcmp(child->key, "cluster") == 0) {
269
- if (child->type != GRPC_JSON_STRING) {
270
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
271
- "\"cluster\" field is not a string"));
272
- }
273
- if (node_->cluster != nullptr) {
274
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
275
- "duplicate \"cluster\" field"));
276
- }
277
- node_->cluster = child->value;
278
- } else if (strcmp(child->key, "locality") == 0) {
279
- if (child->type != GRPC_JSON_OBJECT) {
280
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
281
- "\"locality\" field is not an object"));
282
- }
283
- if (seen_locality) {
284
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
285
- "duplicate \"locality\" field"));
286
- }
287
- seen_locality = true;
288
- grpc_error* parse_error = ParseLocality(child);
289
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
290
- } else if (strcmp(child->key, "metadata") == 0) {
291
- if (child->type != GRPC_JSON_OBJECT) {
292
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
293
- "\"metadata\" field is not an object"));
294
- }
295
- if (seen_metadata) {
296
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
297
- "duplicate \"metadata\" field"));
298
- }
299
- seen_metadata = true;
300
- InlinedVector<grpc_error*, 1> parse_errors =
301
- ParseMetadataStruct(child, &node_->metadata);
302
- if (!parse_errors.empty()) {
303
- grpc_error* parse_error = GRPC_ERROR_CREATE_FROM_VECTOR(
304
- "errors parsing \"metadata\" object", &parse_errors);
305
- error_list.push_back(parse_error);
306
- }
200
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("\"id\" field is not a string"));
201
+ } else {
202
+ node_->id = std::move(*it->second.mutable_string_value());
307
203
  }
308
204
  }
309
- return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing \"node\" object",
310
- &error_list);
311
- }
312
-
313
- grpc_error* XdsBootstrap::ParseLocality(grpc_json* json) {
314
- InlinedVector<grpc_error*, 1> error_list;
315
- node_->locality_region = nullptr;
316
- node_->locality_zone = nullptr;
317
- node_->locality_subzone = nullptr;
318
- for (grpc_json* child = json->child; child != nullptr; child = child->next) {
319
- if (child->key == nullptr) {
320
- error_list.push_back(
321
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("JSON key is null"));
322
- } else if (strcmp(child->key, "region") == 0) {
323
- if (child->type != GRPC_JSON_STRING) {
324
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
325
- "\"region\" field is not a string"));
326
- }
327
- if (node_->locality_region != nullptr) {
328
- error_list.push_back(
329
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("duplicate \"region\" field"));
330
- }
331
- node_->locality_region = child->value;
332
- } else if (strcmp(child->key, "zone") == 0) {
333
- if (child->type != GRPC_JSON_STRING) {
334
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
335
- "\"zone\" field is not a string"));
336
- }
337
- if (node_->locality_zone != nullptr) {
338
- error_list.push_back(
339
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("duplicate \"zone\" field"));
340
- }
341
- node_->locality_zone = child->value;
342
- } else if (strcmp(child->key, "subzone") == 0) {
343
- if (child->type != GRPC_JSON_STRING) {
344
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
345
- "\"subzone\" field is not a string"));
346
- }
347
- if (node_->locality_subzone != nullptr) {
348
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
349
- "duplicate \"subzone\" field"));
350
- }
351
- node_->locality_subzone = child->value;
205
+ it = json->mutable_object()->find("cluster");
206
+ if (it != json->mutable_object()->end()) {
207
+ if (it->second.type() != Json::Type::STRING) {
208
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
209
+ "\"cluster\" field is not a string"));
210
+ } else {
211
+ node_->cluster = std::move(*it->second.mutable_string_value());
352
212
  }
353
213
  }
354
- return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing \"locality\" object",
355
- &error_list);
356
- }
357
-
358
- InlinedVector<grpc_error*, 1> XdsBootstrap::ParseMetadataStruct(
359
- grpc_json* json,
360
- std::map<const char*, XdsBootstrap::MetadataValue, StringLess>* result) {
361
- InlinedVector<grpc_error*, 1> error_list;
362
- for (grpc_json* child = json->child; child != nullptr; child = child->next) {
363
- if (child->key == nullptr) {
364
- error_list.push_back(
365
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("JSON key is null"));
366
- continue;
214
+ it = json->mutable_object()->find("locality");
215
+ if (it != json->mutable_object()->end()) {
216
+ if (it->second.type() != Json::Type::OBJECT) {
217
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
218
+ "\"locality\" field is not an object"));
219
+ } else {
220
+ grpc_error* parse_error = ParseLocality(&it->second);
221
+ if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
367
222
  }
368
- if (result->find(child->key) != result->end()) {
369
- char* msg;
370
- gpr_asprintf(&msg, "duplicate metadata key \"%s\"", child->key);
371
- error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg));
372
- gpr_free(msg);
223
+ }
224
+ it = json->mutable_object()->find("metadata");
225
+ if (it != json->mutable_object()->end()) {
226
+ if (it->second.type() != Json::Type::OBJECT) {
227
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
228
+ "\"metadata\" field is not an object"));
229
+ } else {
230
+ node_->metadata = std::move(it->second);
373
231
  }
374
- MetadataValue& value = (*result)[child->key];
375
- grpc_error* parse_error = ParseMetadataValue(child, 0, &value);
376
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
377
232
  }
378
- return error_list;
233
+ return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing \"node\" object",
234
+ &error_list);
379
235
  }
380
236
 
381
- InlinedVector<grpc_error*, 1> XdsBootstrap::ParseMetadataList(
382
- grpc_json* json, std::vector<MetadataValue>* result) {
237
+ grpc_error* XdsBootstrap::ParseLocality(Json* json) {
383
238
  InlinedVector<grpc_error*, 1> error_list;
384
- size_t idx = 0;
385
- for (grpc_json *child = json->child; child != nullptr;
386
- child = child->next, ++idx) {
387
- if (child->key != nullptr) {
388
- char* msg;
389
- gpr_asprintf(&msg, "JSON key is non-null for index %" PRIuPTR, idx);
390
- error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg));
391
- gpr_free(msg);
239
+ auto it = json->mutable_object()->find("region");
240
+ if (it != json->mutable_object()->end()) {
241
+ if (it->second.type() != Json::Type::STRING) {
242
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
243
+ "\"region\" field is not a string"));
244
+ } else {
245
+ node_->locality_region = std::move(*it->second.mutable_string_value());
392
246
  }
393
- result->emplace_back();
394
- grpc_error* parse_error = ParseMetadataValue(child, idx, &result->back());
395
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
396
247
  }
397
- return error_list;
398
- }
399
-
400
- grpc_error* XdsBootstrap::ParseMetadataValue(grpc_json* json, size_t idx,
401
- MetadataValue* result) {
402
- grpc_error* error = GRPC_ERROR_NONE;
403
- auto context_func = [json, idx]() {
404
- char* context;
405
- if (json->key != nullptr) {
406
- gpr_asprintf(&context, "key \"%s\"", json->key);
248
+ it = json->mutable_object()->find("zone");
249
+ if (it != json->mutable_object()->end()) {
250
+ if (it->second.type() != Json::Type::STRING) {
251
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
252
+ "\"zone\" field is not a string"));
407
253
  } else {
408
- gpr_asprintf(&context, "index %" PRIuPTR, idx);
254
+ node_->locality_zone = std::move(*it->second.mutable_string_value());
409
255
  }
410
- return context;
411
- };
412
- switch (json->type) {
413
- case GRPC_JSON_STRING:
414
- result->type = MetadataValue::Type::STRING;
415
- result->string_value = json->value;
416
- break;
417
- case GRPC_JSON_NUMBER:
418
- result->type = MetadataValue::Type::DOUBLE;
419
- errno = 0; // To distinguish error.
420
- result->double_value = strtod(json->value, nullptr);
421
- if (errno != 0) {
422
- char* context = context_func();
423
- char* msg;
424
- gpr_asprintf(&msg, "error parsing numeric value for %s: \"%s\"",
425
- context, json->value);
426
- error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
427
- gpr_free(context);
428
- gpr_free(msg);
429
- }
430
- break;
431
- case GRPC_JSON_TRUE:
432
- result->type = MetadataValue::Type::BOOL;
433
- result->bool_value = true;
434
- break;
435
- case GRPC_JSON_FALSE:
436
- result->type = MetadataValue::Type::BOOL;
437
- result->bool_value = false;
438
- break;
439
- case GRPC_JSON_NULL:
440
- result->type = MetadataValue::Type::MD_NULL;
441
- break;
442
- case GRPC_JSON_ARRAY: {
443
- result->type = MetadataValue::Type::LIST;
444
- InlinedVector<grpc_error*, 1> error_list =
445
- ParseMetadataList(json, &result->list_value);
446
- if (!error_list.empty()) {
447
- // Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error
448
- // string is not static in this case.
449
- char* context = context_func();
450
- char* msg;
451
- gpr_asprintf(&msg, "errors parsing struct for %s", context);
452
- error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
453
- gpr_free(context);
454
- gpr_free(msg);
455
- for (size_t i = 0; i < error_list.size(); ++i) {
456
- error = grpc_error_add_child(error, error_list[i]);
457
- }
458
- }
459
- break;
460
- }
461
- case GRPC_JSON_OBJECT: {
462
- result->type = MetadataValue::Type::STRUCT;
463
- InlinedVector<grpc_error*, 1> error_list =
464
- ParseMetadataStruct(json, &result->struct_value);
465
- if (!error_list.empty()) {
466
- // Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error
467
- // string is not static in this case.
468
- char* context = context_func();
469
- char* msg;
470
- gpr_asprintf(&msg, "errors parsing struct for %s", context);
471
- error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
472
- gpr_free(context);
473
- gpr_free(msg);
474
- for (size_t i = 0; i < error_list.size(); ++i) {
475
- error = grpc_error_add_child(error, error_list[i]);
476
- GRPC_ERROR_UNREF(error_list[i]);
477
- }
478
- }
479
- break;
256
+ }
257
+ it = json->mutable_object()->find("subzone");
258
+ if (it != json->mutable_object()->end()) {
259
+ if (it->second.type() != Json::Type::STRING) {
260
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
261
+ "\"subzone\" field is not a string"));
262
+ } else {
263
+ node_->locality_subzone = std::move(*it->second.mutable_string_value());
480
264
  }
481
- default:
482
- break;
483
265
  }
484
- return error;
266
+ return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing \"locality\" object",
267
+ &error_list);
485
268
  }
486
269
 
487
270
  } // namespace grpc_core