grpc 1.26.0 → 1.28.0

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

Potentially problematic release.


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

Files changed (829) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +1699 -1482
  3. data/etc/roots.pem +44 -0
  4. data/include/grpc/grpc_security.h +37 -15
  5. data/include/grpc/grpc_security_constants.h +27 -0
  6. data/include/grpc/impl/codegen/grpc_types.h +19 -0
  7. data/include/grpc/impl/codegen/port_platform.h +8 -1
  8. data/include/grpc/impl/codegen/sync.h +5 -3
  9. data/include/grpc/impl/codegen/sync_abseil.h +36 -0
  10. data/include/grpc/module.modulemap +3 -0
  11. data/{src/core/lib/json/json_common.h → include/grpc/support/sync_abseil.h} +7 -15
  12. data/src/core/ext/filters/client_channel/client_channel.cc +74 -32
  13. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +31 -47
  14. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -3
  15. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  16. data/src/core/ext/filters/client_channel/http_proxy.cc +8 -5
  17. data/src/core/ext/filters/client_channel/lb_policy.cc +4 -3
  18. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +291 -0
  19. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +83 -0
  20. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +224 -367
  21. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +88 -121
  22. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +28 -57
  23. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +18 -21
  24. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +9 -13
  25. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +85 -83
  26. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +623 -767
  27. data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -3
  28. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +43 -75
  29. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  30. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +57 -70
  31. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +1 -1
  32. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -1
  33. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
  34. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +3 -3
  35. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -2
  36. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
  37. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +3 -3
  38. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +31 -7
  39. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +228 -286
  40. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +2 -2
  41. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +37 -176
  42. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +7 -11
  43. data/src/core/ext/filters/client_channel/service_config.cc +91 -160
  44. data/src/core/ext/filters/client_channel/service_config.h +14 -21
  45. data/src/core/ext/filters/client_channel/xds/xds_api.cc +1426 -229
  46. data/src/core/ext/filters/client_channel/xds/xds_api.h +214 -115
  47. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +236 -339
  48. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +32 -45
  49. data/src/core/ext/filters/client_channel/xds/xds_channel.h +3 -1
  50. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +14 -9
  51. data/src/core/ext/filters/client_channel/xds/xds_client.cc +986 -252
  52. data/src/core/ext/filters/client_channel/xds/xds_client.h +84 -36
  53. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +53 -131
  54. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +119 -152
  55. data/src/core/ext/filters/message_size/message_size_filter.cc +32 -35
  56. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  57. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +3 -6
  58. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +6 -8
  59. data/src/core/ext/transport/chttp2/transport/writing.cc +1 -1
  60. data/src/core/ext/transport/inproc/inproc_transport.cc +22 -42
  61. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +17 -0
  62. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +30 -0
  63. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +27 -0
  64. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +54 -0
  65. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +46 -21
  66. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +116 -29
  67. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +4 -362
  68. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +14 -1337
  69. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +390 -0
  70. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +1411 -0
  71. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +29 -8
  72. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +60 -0
  73. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +1 -0
  74. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +1 -0
  75. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +5 -3
  76. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +6 -2
  77. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +48 -5
  78. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +154 -4
  79. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +19 -15
  80. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +46 -32
  81. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +26 -4
  82. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +70 -0
  83. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +42 -25
  84. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +83 -25
  85. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +1 -0
  86. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +43 -7
  87. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +115 -0
  88. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -0
  89. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +7 -68
  90. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +14 -201
  91. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +91 -0
  92. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +240 -0
  93. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +1 -71
  94. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +3 -228
  95. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +88 -0
  96. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +258 -0
  97. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +1 -0
  98. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +30 -0
  99. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +53 -0
  100. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +104 -0
  101. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +383 -0
  102. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +17 -0
  103. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +33 -0
  104. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +144 -0
  105. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +527 -0
  106. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +42 -0
  107. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +112 -0
  108. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +29 -0
  109. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +53 -0
  110. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +62 -0
  111. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +199 -0
  112. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +17 -0
  113. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +33 -0
  114. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +793 -0
  115. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +2936 -0
  116. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +58 -0
  117. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +134 -0
  118. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +27 -0
  119. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +53 -0
  120. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +227 -0
  121. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +725 -0
  122. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +296 -0
  123. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +1072 -0
  124. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +32 -0
  125. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +65 -0
  126. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +47 -0
  127. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +108 -0
  128. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +52 -0
  129. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +133 -0
  130. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +87 -0
  131. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +258 -0
  132. data/src/core/ext/upb-generated/envoy/type/range.upb.c +11 -0
  133. data/src/core/ext/upb-generated/envoy/type/range.upb.h +27 -0
  134. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +28 -0
  135. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +62 -0
  136. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +88 -0
  137. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +249 -0
  138. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +30 -27
  139. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +64 -52
  140. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +13 -5
  141. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +34 -0
  142. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +48 -0
  143. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +104 -0
  144. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +17 -0
  145. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +30 -0
  146. data/src/core/ext/upb-generated/validate/validate.upb.c +38 -34
  147. data/src/core/ext/upb-generated/validate/validate.upb.h +129 -99
  148. data/src/core/lib/channel/channel_trace.cc +32 -41
  149. data/src/core/lib/channel/channel_trace.h +3 -3
  150. data/src/core/lib/channel/channelz.cc +158 -248
  151. data/src/core/lib/channel/channelz.h +17 -10
  152. data/src/core/lib/channel/channelz_registry.cc +47 -74
  153. data/src/core/lib/channel/channelz_registry.h +4 -4
  154. data/src/core/lib/gpr/sync_abseil.cc +114 -0
  155. data/src/core/lib/gpr/sync_posix.cc +8 -5
  156. data/src/core/lib/gpr/sync_windows.cc +4 -2
  157. data/src/core/lib/gpr/time_precise.cc +1 -1
  158. data/src/core/lib/gprpp/host_port.cc +1 -1
  159. data/src/core/lib/gprpp/inlined_vector.h +1 -210
  160. data/src/core/lib/gprpp/memory.h +2 -6
  161. data/src/core/lib/gprpp/optional.h +6 -21
  162. data/src/core/lib/gprpp/string_view.h +5 -110
  163. data/src/core/lib/gprpp/sync.h +9 -0
  164. data/src/core/lib/iomgr/buffer_list.cc +36 -35
  165. data/src/core/lib/iomgr/error.h +4 -4
  166. data/src/core/lib/iomgr/ev_epollex_linux.cc +12 -4
  167. data/src/core/lib/iomgr/executor.cc +1 -1
  168. data/src/core/lib/iomgr/fork_posix.cc +4 -0
  169. data/src/core/lib/iomgr/load_file.cc +1 -0
  170. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +87 -0
  171. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +88 -0
  172. data/src/core/lib/iomgr/socket_utils_common_posix.cc +14 -0
  173. data/src/core/lib/iomgr/socket_utils_posix.h +12 -0
  174. data/src/core/lib/iomgr/tcp_client_posix.cc +17 -17
  175. data/src/core/lib/iomgr/tcp_client_posix.h +6 -6
  176. data/src/core/lib/iomgr/tcp_custom.h +3 -0
  177. data/src/core/lib/iomgr/tcp_posix.cc +608 -56
  178. data/src/core/lib/iomgr/tcp_server_custom.cc +15 -2
  179. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +8 -0
  180. data/src/core/lib/iomgr/work_serializer.cc +155 -0
  181. data/src/core/lib/iomgr/work_serializer.h +65 -0
  182. data/src/core/lib/json/json.h +208 -68
  183. data/src/core/lib/json/json_reader.cc +511 -319
  184. data/src/core/lib/json/json_writer.cc +201 -110
  185. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  186. data/src/core/lib/security/credentials/composite/composite_credentials.cc +7 -0
  187. data/src/core/lib/security/credentials/composite/composite_credentials.h +5 -1
  188. data/src/core/lib/security/credentials/credentials.h +10 -1
  189. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -1
  190. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +10 -8
  191. data/src/core/lib/security/credentials/jwt/json_token.cc +26 -56
  192. data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
  193. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -18
  194. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +149 -159
  195. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
  196. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +38 -35
  197. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
  198. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -4
  199. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -1
  200. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +20 -0
  201. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +9 -0
  202. data/src/core/lib/security/credentials/tls/{spiffe_credentials.cc → tls_credentials.cc} +23 -24
  203. data/src/core/lib/security/credentials/tls/{spiffe_credentials.h → tls_credentials.h} +9 -9
  204. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -0
  205. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +22 -2
  206. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +2 -2
  207. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +2 -2
  208. data/src/core/lib/security/security_connector/local/local_security_connector.cc +31 -6
  209. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +3 -15
  210. data/src/core/lib/security/security_connector/ssl_utils.cc +48 -4
  211. data/src/core/lib/security/security_connector/ssl_utils.h +12 -1
  212. data/src/core/lib/security/security_connector/tls/{spiffe_security_connector.cc → tls_security_connector.cc} +106 -70
  213. data/src/core/lib/security/security_connector/tls/{spiffe_security_connector.h → tls_security_connector.h} +22 -19
  214. data/src/core/lib/security/transport/client_auth_filter.cc +33 -0
  215. data/src/core/lib/security/transport/security_handshaker.cc +2 -2
  216. data/src/core/lib/security/util/json_util.cc +22 -15
  217. data/src/core/lib/security/util/json_util.h +2 -2
  218. data/src/core/lib/surface/completion_queue.cc +22 -1
  219. data/src/core/lib/surface/version.cc +1 -1
  220. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  221. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
  222. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
  223. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +3 -3
  224. data/src/core/tsi/fake_transport_security.cc +7 -3
  225. data/src/core/tsi/fake_transport_security.h +2 -0
  226. data/src/core/tsi/grpc_shadow_boringssl.h +1333 -1319
  227. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  228. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -1
  229. data/src/core/tsi/ssl_transport_security.cc +145 -8
  230. data/src/core/tsi/ssl_transport_security.h +15 -1
  231. data/src/core/tsi/transport_security.cc +13 -0
  232. data/src/core/tsi/transport_security_grpc.cc +2 -2
  233. data/src/core/tsi/transport_security_grpc.h +2 -2
  234. data/src/core/tsi/transport_security_interface.h +12 -0
  235. data/src/ruby/bin/math_pb.rb +5 -5
  236. data/src/ruby/ext/grpc/rb_call_credentials.c +4 -1
  237. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  238. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -1
  239. data/src/ruby/lib/grpc/version.rb +1 -1
  240. data/src/ruby/pb/grpc/health/v1/health_pb.rb +3 -3
  241. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -1
  242. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +23 -13
  243. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +159 -0
  244. data/third_party/abseil-cpp/absl/base/attributes.h +621 -0
  245. data/third_party/abseil-cpp/absl/base/call_once.h +226 -0
  246. data/third_party/abseil-cpp/absl/base/casts.h +184 -0
  247. data/third_party/abseil-cpp/absl/base/config.h +671 -0
  248. data/third_party/abseil-cpp/absl/base/const_init.h +76 -0
  249. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +129 -0
  250. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +389 -0
  251. data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +200 -0
  252. data/third_party/abseil-cpp/absl/base/internal/bits.h +218 -0
  253. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +107 -0
  254. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +94 -0
  255. data/third_party/abseil-cpp/absl/base/internal/endian.h +266 -0
  256. data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
  257. data/third_party/abseil-cpp/absl/base/internal/hide_ptr.h +51 -0
  258. data/third_party/abseil-cpp/absl/base/internal/identity.h +37 -0
  259. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +107 -0
  260. data/third_party/abseil-cpp/absl/base/internal/invoke.h +187 -0
  261. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +107 -0
  262. data/third_party/abseil-cpp/absl/base/internal/per_thread_tls.h +52 -0
  263. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +240 -0
  264. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +183 -0
  265. data/third_party/abseil-cpp/absl/base/internal/scheduling_mode.h +58 -0
  266. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +233 -0
  267. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +243 -0
  268. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +35 -0
  269. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +66 -0
  270. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +46 -0
  271. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc +81 -0
  272. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +93 -0
  273. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +37 -0
  274. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +416 -0
  275. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +66 -0
  276. data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +271 -0
  277. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +152 -0
  278. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +259 -0
  279. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +108 -0
  280. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.h +75 -0
  281. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +66 -0
  282. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +158 -0
  283. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +140 -0
  284. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +124 -0
  285. data/third_party/abseil-cpp/absl/base/log_severity.cc +27 -0
  286. data/third_party/abseil-cpp/absl/base/log_severity.h +121 -0
  287. data/third_party/abseil-cpp/absl/base/macros.h +220 -0
  288. data/third_party/abseil-cpp/absl/base/optimization.h +181 -0
  289. data/third_party/abseil-cpp/absl/base/options.h +211 -0
  290. data/third_party/abseil-cpp/absl/base/policy_checks.h +111 -0
  291. data/third_party/abseil-cpp/absl/base/port.h +26 -0
  292. data/third_party/abseil-cpp/absl/base/thread_annotations.h +280 -0
  293. data/third_party/abseil-cpp/absl/container/inlined_vector.h +848 -0
  294. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +265 -0
  295. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +892 -0
  296. data/third_party/abseil-cpp/absl/memory/memory.h +695 -0
  297. data/third_party/abseil-cpp/absl/meta/type_traits.h +759 -0
  298. data/third_party/abseil-cpp/absl/numeric/int128.cc +404 -0
  299. data/third_party/abseil-cpp/absl/numeric/int128.h +1091 -0
  300. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +302 -0
  301. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +308 -0
  302. data/third_party/abseil-cpp/absl/strings/ascii.cc +200 -0
  303. data/third_party/abseil-cpp/absl/strings/ascii.h +242 -0
  304. data/third_party/abseil-cpp/absl/strings/charconv.cc +984 -0
  305. data/third_party/abseil-cpp/absl/strings/charconv.h +119 -0
  306. data/third_party/abseil-cpp/absl/strings/escaping.cc +949 -0
  307. data/third_party/abseil-cpp/absl/strings/escaping.h +164 -0
  308. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +156 -0
  309. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +359 -0
  310. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +423 -0
  311. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +504 -0
  312. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.h +99 -0
  313. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +180 -0
  314. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +58 -0
  315. data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +112 -0
  316. data/third_party/abseil-cpp/absl/strings/internal/memutil.h +148 -0
  317. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +36 -0
  318. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +89 -0
  319. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +73 -0
  320. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +248 -0
  321. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +388 -0
  322. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +432 -0
  323. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +245 -0
  324. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +209 -0
  325. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +326 -0
  326. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +51 -0
  327. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +415 -0
  328. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +493 -0
  329. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +23 -0
  330. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
  331. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +104 -0
  332. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +334 -0
  333. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +333 -0
  334. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +314 -0
  335. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +455 -0
  336. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +53 -0
  337. data/third_party/abseil-cpp/absl/strings/internal/utf8.h +50 -0
  338. data/third_party/abseil-cpp/absl/strings/match.cc +40 -0
  339. data/third_party/abseil-cpp/absl/strings/match.h +90 -0
  340. data/third_party/abseil-cpp/absl/strings/numbers.cc +965 -0
  341. data/third_party/abseil-cpp/absl/strings/numbers.h +266 -0
  342. data/third_party/abseil-cpp/absl/strings/str_cat.cc +246 -0
  343. data/third_party/abseil-cpp/absl/strings/str_cat.h +408 -0
  344. data/third_party/abseil-cpp/absl/strings/str_format.h +537 -0
  345. data/third_party/abseil-cpp/absl/strings/str_join.h +293 -0
  346. data/third_party/abseil-cpp/absl/strings/str_replace.cc +82 -0
  347. data/third_party/abseil-cpp/absl/strings/str_replace.h +219 -0
  348. data/third_party/abseil-cpp/absl/strings/str_split.cc +139 -0
  349. data/third_party/abseil-cpp/absl/strings/str_split.h +513 -0
  350. data/third_party/abseil-cpp/absl/strings/string_view.cc +235 -0
  351. data/third_party/abseil-cpp/absl/strings/string_view.h +622 -0
  352. data/third_party/abseil-cpp/absl/strings/strip.h +91 -0
  353. data/third_party/abseil-cpp/absl/strings/substitute.cc +171 -0
  354. data/third_party/abseil-cpp/absl/strings/substitute.h +693 -0
  355. data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +48 -0
  356. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +78 -0
  357. data/third_party/abseil-cpp/absl/types/internal/optional.h +396 -0
  358. data/third_party/abseil-cpp/absl/types/internal/span.h +128 -0
  359. data/third_party/abseil-cpp/absl/types/optional.h +776 -0
  360. data/third_party/abseil-cpp/absl/types/span.h +713 -0
  361. data/third_party/abseil-cpp/absl/utility/utility.h +350 -0
  362. data/{src/boringssl → third_party/boringssl-with-bazel}/err_data.c +0 -0
  363. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bitstr.c +0 -0
  364. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bool.c +0 -0
  365. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_d2i_fp.c +0 -0
  366. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_dup.c +0 -0
  367. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_enum.c +0 -0
  368. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_gentm.c +0 -0
  369. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_i2d_fp.c +0 -0
  370. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_int.c +0 -0
  371. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_mbstr.c +0 -0
  372. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_object.c +0 -0
  373. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_octet.c +0 -0
  374. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_print.c +0 -0
  375. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_strnid.c +0 -0
  376. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_time.c +3 -4
  377. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_type.c +0 -0
  378. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utctm.c +0 -0
  379. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utf8.c +0 -0
  380. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_lib.c +0 -0
  381. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_locl.h +0 -0
  382. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_par.c +0 -0
  383. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn_pack.c +0 -0
  384. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_enum.c +0 -0
  385. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_int.c +0 -0
  386. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_string.c +0 -0
  387. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_dec.c +0 -0
  388. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_enc.c +0 -0
  389. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_fre.c +0 -0
  390. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_new.c +0 -0
  391. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_typ.c +0 -0
  392. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_utl.c +0 -0
  393. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/time_support.c +0 -0
  394. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/base64/base64.c +0 -0
  395. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio.c +0 -0
  396. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio_mem.c +0 -0
  397. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/connect.c +3 -4
  398. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/fd.c +0 -1
  399. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/file.c +5 -6
  400. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/hexdump.c +0 -0
  401. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/internal.h +0 -0
  402. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/pair.c +0 -1
  403. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/printf.c +0 -0
  404. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket.c +0 -0
  405. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket_helper.c +0 -0
  406. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/bn_asn1.c +0 -0
  407. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/convert.c +0 -0
  408. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/buf/buf.c +10 -69
  409. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/asn1_compat.c +0 -0
  410. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/ber.c +0 -0
  411. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbb.c +41 -2
  412. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbs.c +60 -3
  413. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/internal.h +0 -0
  414. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/unicode.c +0 -0
  415. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/chacha.c +0 -0
  416. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/internal.h +0 -0
  417. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/cipher_extra.c +0 -0
  418. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/derive_key.c +0 -0
  419. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesccm.c +0 -0
  420. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesctrhmac.c +0 -0
  421. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesgcmsiv.c +8 -0
  422. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_chacha20poly1305.c +0 -0
  423. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_null.c +0 -0
  424. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc2.c +0 -0
  425. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc4.c +0 -0
  426. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_tls.c +0 -0
  427. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/internal.h +0 -0
  428. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/tls_cbc.c +0 -0
  429. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cmac/cmac.c +0 -0
  430. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf.c +0 -0
  431. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf_def.h +0 -0
  432. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/internal.h +0 -0
  433. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-fuchsia.c +0 -0
  434. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-linux.c +0 -0
  435. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.c +0 -1
  436. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.h +0 -0
  437. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm.c +0 -0
  438. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-intel.c +0 -0
  439. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-ppc64le.c +0 -0
  440. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/crypto.c +0 -0
  441. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/curve25519/spake25519.c +0 -0
  442. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/check.c +3 -3
  443. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh.c +1 -2
  444. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh_asn1.c +0 -0
  445. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/params.c +0 -0
  446. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/digest_extra/digest_extra.c +0 -0
  447. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa.c +0 -0
  448. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa_asn1.c +0 -0
  449. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_asn1.c +0 -0
  450. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_derive.c +2 -3
  451. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdh_extra/ecdh_extra.c +0 -0
  452. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdsa_extra/ecdsa_asn1.c +0 -0
  453. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/engine/engine.c +0 -0
  454. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/err.c +6 -6
  455. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/internal.h +0 -0
  456. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/digestsign.c +0 -0
  457. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp.c +0 -0
  458. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_asn1.c +0 -0
  459. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_ctx.c +0 -0
  460. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/internal.h +0 -0
  461. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_dsa_asn1.c +0 -0
  462. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec.c +0 -1
  463. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec_asn1.c +0 -0
  464. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519.c +0 -0
  465. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519_asn1.c +0 -0
  466. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa.c +14 -2
  467. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa_asn1.c +0 -0
  468. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519.c +0 -0
  469. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519_asn1.c +1 -2
  470. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/pbkdf.c +0 -0
  471. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/print.c +0 -0
  472. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/scrypt.c +0 -0
  473. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/sign.c +0 -0
  474. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ex_data.c +0 -0
  475. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +108 -0
  476. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1282 -0
  477. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/internal.h +5 -7
  478. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/key_wrap.c +0 -0
  479. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/mode_wrappers.c +0 -2
  480. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bcm.c +2 -0
  481. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/add.c +0 -0
  482. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -0
  483. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bn.c +0 -0
  484. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bytes.c +0 -0
  485. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/cmp.c +0 -0
  486. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/ctx.c +0 -0
  487. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div.c +0 -0
  488. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div_extra.c +0 -0
  489. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/exponentiation.c +0 -0
  490. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd.c +0 -0
  491. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd_extra.c +0 -0
  492. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/generic.c +0 -0
  493. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/internal.h +0 -0
  494. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/jacobi.c +0 -0
  495. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery.c +0 -0
  496. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery_inv.c +0 -0
  497. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/mul.c +0 -0
  498. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/prime.c +11 -12
  499. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/random.c +0 -0
  500. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.c +0 -0
  501. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.h +0 -0
  502. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/shift.c +0 -0
  503. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/sqrt.c +0 -0
  504. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/aead.c +0 -0
  505. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/cipher.c +0 -0
  506. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_aes.c +3 -5
  507. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_des.c +0 -0
  508. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/internal.h +0 -0
  509. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/delocate.h +0 -0
  510. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/des.c +0 -0
  511. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/internal.h +0 -0
  512. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digest.c +0 -0
  513. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digests.c +0 -0
  514. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/internal.h +0 -0
  515. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/md32_common.h +0 -0
  516. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec.c +0 -0
  517. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_key.c +1 -1
  518. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_montgomery.c +0 -0
  519. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/felem.c +0 -0
  520. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/internal.h +0 -0
  521. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/oct.c +0 -0
  522. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p224-64.c +0 -0
  523. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64-table.h +0 -0
  524. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.c +0 -0
  525. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.h +0 -0
  526. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/scalar.c +0 -0
  527. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/simple.c +0 -0
  528. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/simple_mul.c +0 -0
  529. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/util.c +0 -0
  530. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/wnaf.c +0 -0
  531. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdh/ecdh.c +0 -0
  532. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdsa/ecdsa.c +0 -0
  533. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/fips_shared_support.c +0 -0
  534. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/hmac/hmac.c +0 -0
  535. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/is_fips.c +0 -0
  536. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md4/md4.c +0 -0
  537. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/internal.h +0 -0
  538. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/md5.c +0 -0
  539. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cbc.c +0 -0
  540. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cfb.c +0 -0
  541. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ctr.c +0 -0
  542. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/gcm.c +45 -193
  543. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +304 -0
  544. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/internal.h +8 -18
  545. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ofb.c +0 -0
  546. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/polyval.c +0 -0
  547. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/ctrdrbg.c +0 -0
  548. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/internal.h +0 -0
  549. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/rand.c +0 -0
  550. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/urandom.c +0 -0
  551. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/blinding.c +0 -0
  552. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/internal.h +0 -0
  553. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/padding.c +0 -0
  554. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa.c +7 -1
  555. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa_impl.c +60 -51
  556. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/self_check/self_check.c +0 -0
  557. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/internal.h +0 -0
  558. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1-altivec.c +0 -0
  559. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1.c +0 -0
  560. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha256.c +0 -0
  561. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha512.c +0 -0
  562. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/internal.h +0 -0
  563. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/kdf.c +0 -0
  564. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hkdf/hkdf.c +0 -0
  565. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/hrss.c +210 -311
  566. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/internal.h +0 -1
  567. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/internal.h +21 -1
  568. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/lhash/lhash.c +0 -0
  569. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/mem.c +70 -0
  570. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj.c +16 -21
  571. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_dat.h +27 -6
  572. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_xref.c +0 -0
  573. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_all.c +0 -0
  574. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_info.c +0 -1
  575. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_lib.c +7 -7
  576. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_oth.c +0 -1
  577. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pk8.c +0 -1
  578. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pkey.c +0 -1
  579. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_x509.c +0 -0
  580. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_xaux.c +0 -0
  581. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/internal.h +0 -0
  582. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7.c +0 -0
  583. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7_x509.c +1 -1
  584. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/internal.h +0 -0
  585. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/p5_pbev2.c +0 -0
  586. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8.c +0 -0
  587. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8_x509.c +0 -0
  588. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/internal.h +0 -0
  589. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305.c +2 -2
  590. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_arm.c +21 -20
  591. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_vec.c +34 -17
  592. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/internal.h +0 -0
  593. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/pool.c +1 -2
  594. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/deterministic.c +0 -0
  595. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/forkunsafe.c +0 -0
  596. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/fuchsia.c +0 -0
  597. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/rand_extra.c +0 -0
  598. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/windows.c +0 -0
  599. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rc4/rc4.c +0 -0
  600. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_c11.c +0 -0
  601. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_lock.c +0 -0
  602. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_asn1.c +0 -0
  603. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_print.c +0 -0
  604. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/siphash/siphash.c +3 -1
  605. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/stack/stack.c +0 -0
  606. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread.c +0 -0
  607. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_none.c +0 -0
  608. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_pthread.c +0 -0
  609. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_win.c +0 -0
  610. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_digest.c +0 -0
  611. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_sign.c +0 -0
  612. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_strex.c +0 -0
  613. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_verify.c +0 -1
  614. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/algorithm.c +0 -0
  615. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/asn1_gen.c +0 -0
  616. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_dir.c +1 -1
  617. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_file.c +0 -1
  618. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/charmap.h +0 -0
  619. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/i2d_pr.c +0 -0
  620. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/internal.h +0 -0
  621. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/rsa_pss.c +0 -0
  622. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_crl.c +0 -0
  623. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_req.c +0 -0
  624. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509.c +0 -0
  625. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509a.c +0 -0
  626. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/vpm_int.h +0 -0
  627. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509.c +0 -0
  628. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_att.c +0 -0
  629. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_cmp.c +0 -1
  630. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_d2.c +0 -0
  631. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_def.c +0 -0
  632. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_ext.c +0 -0
  633. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_lu.c +0 -0
  634. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_obj.c +1 -1
  635. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_r2x.c +0 -1
  636. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_req.c +0 -1
  637. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_set.c +0 -0
  638. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_trs.c +1 -2
  639. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_txt.c +0 -0
  640. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_v3.c +0 -0
  641. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vfy.c +0 -1
  642. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vpm.c +3 -4
  643. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509cset.c +0 -0
  644. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509name.c +0 -0
  645. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509rset.c +0 -0
  646. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509spki.c +0 -0
  647. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_algor.c +0 -0
  648. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_all.c +0 -1
  649. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_attrib.c +0 -0
  650. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_crl.c +0 -0
  651. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_exten.c +0 -0
  652. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_info.c +0 -0
  653. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_name.c +0 -0
  654. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pkey.c +0 -0
  655. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pubkey.c +0 -0
  656. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_req.c +0 -0
  657. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_sig.c +0 -0
  658. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_spki.c +0 -0
  659. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_val.c +0 -0
  660. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509.c +0 -0
  661. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509a.c +0 -0
  662. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/ext_dat.h +0 -0
  663. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/internal.h +0 -0
  664. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_cache.c +0 -0
  665. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_data.c +0 -0
  666. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_int.h +0 -0
  667. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_lib.c +0 -0
  668. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_map.c +0 -0
  669. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_node.c +0 -0
  670. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_tree.c +0 -0
  671. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akey.c +0 -0
  672. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akeya.c +0 -0
  673. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_alt.c +3 -3
  674. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bcons.c +0 -0
  675. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bitst.c +0 -0
  676. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_conf.c +0 -0
  677. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_cpols.c +0 -0
  678. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_crld.c +0 -0
  679. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_enum.c +2 -2
  680. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_extku.c +0 -0
  681. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_genn.c +0 -0
  682. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ia5.c +0 -0
  683. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_info.c +4 -5
  684. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_int.c +0 -0
  685. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_lib.c +0 -0
  686. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ncons.c +0 -0
  687. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ocsp.c +0 -0
  688. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pci.c +0 -0
  689. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcia.c +0 -0
  690. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcons.c +0 -0
  691. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pku.c +0 -0
  692. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pmaps.c +0 -0
  693. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_prn.c +0 -0
  694. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_purp.c +2 -3
  695. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_skey.c +0 -0
  696. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_sxnet.c +0 -0
  697. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_utl.c +11 -12
  698. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aead.h +0 -0
  699. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aes.h +0 -0
  700. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/arm_arch.h +0 -0
  701. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1.h +0 -0
  702. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1_mac.h +0 -0
  703. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1t.h +0 -0
  704. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base.h +0 -0
  705. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base64.h +0 -0
  706. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bio.h +0 -0
  707. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/blowfish.h +0 -0
  708. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bn.h +32 -20
  709. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buf.h +9 -9
  710. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buffer.h +0 -0
  711. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bytestring.h +34 -0
  712. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cast.h +0 -0
  713. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/chacha.h +0 -0
  714. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cipher.h +0 -0
  715. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cmac.h +0 -0
  716. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/conf.h +0 -0
  717. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cpu.h +0 -0
  718. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/crypto.h +0 -0
  719. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/curve25519.h +0 -0
  720. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/des.h +0 -0
  721. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dh.h +0 -0
  722. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/digest.h +0 -0
  723. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dsa.h +0 -0
  724. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dtls1.h +0 -0
  725. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/e_os2.h +0 -0
  726. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec.h +11 -4
  727. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec_key.h +4 -2
  728. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdh.h +0 -0
  729. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdsa.h +0 -0
  730. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/engine.h +0 -0
  731. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/err.h +11 -9
  732. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/evp.h +20 -0
  733. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ex_data.h +0 -0
  734. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hkdf.h +0 -0
  735. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hmac.h +0 -0
  736. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hrss.h +0 -0
  737. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/is_boringssl.h +0 -0
  738. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/lhash.h +0 -0
  739. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md4.h +0 -0
  740. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md5.h +0 -0
  741. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/mem.h +17 -2
  742. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/nid.h +9 -0
  743. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj.h +0 -0
  744. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj_mac.h +0 -0
  745. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/objects.h +0 -0
  746. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslconf.h +0 -0
  747. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslv.h +0 -0
  748. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ossl_typ.h +0 -0
  749. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pem.h +0 -0
  750. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs12.h +0 -0
  751. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs7.h +0 -0
  752. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs8.h +0 -0
  753. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/poly1305.h +5 -7
  754. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pool.h +0 -0
  755. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rand.h +0 -0
  756. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rc4.h +0 -0
  757. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ripemd.h +0 -0
  758. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rsa.h +0 -0
  759. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/safestack.h +0 -0
  760. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/sha.h +0 -0
  761. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/siphash.h +0 -0
  762. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/span.h +0 -0
  763. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/srtp.h +0 -0
  764. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl.h +10 -20
  765. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl3.h +0 -0
  766. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/stack.h +0 -0
  767. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/thread.h +0 -0
  768. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/tls1.h +0 -3
  769. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/type_check.h +0 -0
  770. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509.h +0 -0
  771. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509_vfy.h +0 -0
  772. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509v3.h +0 -0
  773. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/bio_ssl.cc +0 -0
  774. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_both.cc +0 -1
  775. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_lib.cc +0 -0
  776. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_pkt.cc +0 -1
  777. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_srtp.cc +0 -0
  778. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_method.cc +0 -1
  779. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_record.cc +0 -0
  780. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handoff.cc +126 -29
  781. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake.cc +5 -4
  782. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_client.cc +24 -13
  783. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_server.cc +1 -5
  784. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/internal.h +32 -26
  785. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_both.cc +0 -0
  786. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_lib.cc +2 -3
  787. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_pkt.cc +0 -1
  788. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_aead_ctx.cc +0 -0
  789. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_asn1.cc +1 -2
  790. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_buffer.cc +34 -15
  791. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cert.cc +0 -1
  792. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cipher.cc +0 -1
  793. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_file.cc +0 -0
  794. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_key_share.cc +0 -0
  795. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_lib.cc +13 -14
  796. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_privkey.cc +0 -0
  797. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_session.cc +2 -1
  798. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_stat.cc +0 -0
  799. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_transcript.cc +0 -0
  800. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_versions.cc +1 -1
  801. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_x509.cc +0 -0
  802. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_enc.cc +0 -0
  803. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_lib.cc +11 -171
  804. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_both.cc +0 -0
  805. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_client.cc +3 -4
  806. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_enc.cc +5 -1
  807. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_server.cc +78 -101
  808. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_method.cc +1 -1
  809. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_record.cc +7 -2
  810. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519.c +0 -0
  811. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_32.h +0 -0
  812. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_64.h +0 -0
  813. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_tables.h +0 -0
  814. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/internal.h +0 -0
  815. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256.c +0 -0
  816. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256_32.h +0 -0
  817. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256_64.h +0 -0
  818. data/third_party/upb/upb/decode.c +4 -0
  819. data/third_party/upb/upb/port.c +0 -1
  820. data/third_party/upb/upb/port_def.inc +1 -3
  821. data/third_party/upb/upb/table.c +2 -1
  822. metadata +680 -505
  823. data/src/core/lib/iomgr/logical_thread.cc +0 -103
  824. data/src/core/lib/iomgr/logical_thread.h +0 -52
  825. data/src/core/lib/json/json.cc +0 -94
  826. data/src/core/lib/json/json_reader.h +0 -146
  827. data/src/core/lib/json/json_string.cc +0 -367
  828. data/src/core/lib/json/json_writer.h +0 -84
  829. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +0 -860
@@ -21,95 +21,264 @@
21
21
  #include <string.h>
22
22
 
23
23
  #include <grpc/support/log.h>
24
-
25
- #include "src/core/lib/json/json_reader.h"
26
-
27
- static void json_reader_string_clear(grpc_json_reader* reader) {
28
- reader->vtable->string_clear(reader->userdata);
24
+ #include <grpc/support/string_util.h>
25
+
26
+ #include "src/core/lib/json/json.h"
27
+
28
+ #define GRPC_JSON_MAX_DEPTH 255
29
+ #define GRPC_JSON_MAX_ERRORS 16
30
+
31
+ namespace grpc_core {
32
+
33
+ namespace {
34
+
35
+ class JsonReader {
36
+ public:
37
+ static grpc_error* Parse(StringView input, Json* output);
38
+
39
+ private:
40
+ enum class Status {
41
+ GRPC_JSON_DONE, /* The parser finished successfully. */
42
+ GRPC_JSON_PARSE_ERROR, /* The parser found an error in the json stream. */
43
+ GRPC_JSON_INTERNAL_ERROR /* The parser got an internal error. */
44
+ };
45
+
46
+ enum class State {
47
+ GRPC_JSON_STATE_OBJECT_KEY_BEGIN,
48
+ GRPC_JSON_STATE_OBJECT_KEY_STRING,
49
+ GRPC_JSON_STATE_OBJECT_KEY_END,
50
+ GRPC_JSON_STATE_VALUE_BEGIN,
51
+ GRPC_JSON_STATE_VALUE_STRING,
52
+ GRPC_JSON_STATE_STRING_ESCAPE,
53
+ GRPC_JSON_STATE_STRING_ESCAPE_U1,
54
+ GRPC_JSON_STATE_STRING_ESCAPE_U2,
55
+ GRPC_JSON_STATE_STRING_ESCAPE_U3,
56
+ GRPC_JSON_STATE_STRING_ESCAPE_U4,
57
+ GRPC_JSON_STATE_VALUE_NUMBER,
58
+ GRPC_JSON_STATE_VALUE_NUMBER_WITH_DECIMAL,
59
+ GRPC_JSON_STATE_VALUE_NUMBER_ZERO,
60
+ GRPC_JSON_STATE_VALUE_NUMBER_DOT,
61
+ GRPC_JSON_STATE_VALUE_NUMBER_E,
62
+ GRPC_JSON_STATE_VALUE_NUMBER_EPM,
63
+ GRPC_JSON_STATE_VALUE_TRUE_R,
64
+ GRPC_JSON_STATE_VALUE_TRUE_U,
65
+ GRPC_JSON_STATE_VALUE_TRUE_E,
66
+ GRPC_JSON_STATE_VALUE_FALSE_A,
67
+ GRPC_JSON_STATE_VALUE_FALSE_L,
68
+ GRPC_JSON_STATE_VALUE_FALSE_S,
69
+ GRPC_JSON_STATE_VALUE_FALSE_E,
70
+ GRPC_JSON_STATE_VALUE_NULL_U,
71
+ GRPC_JSON_STATE_VALUE_NULL_L1,
72
+ GRPC_JSON_STATE_VALUE_NULL_L2,
73
+ GRPC_JSON_STATE_VALUE_END,
74
+ GRPC_JSON_STATE_END
75
+ };
76
+
77
+ /* The first non-unicode value is 0x110000. But let's pick
78
+ * a value high enough to start our error codes from. These
79
+ * values are safe to return from the read_char function.
80
+ */
81
+ static constexpr uint32_t GRPC_JSON_READ_CHAR_EOF = 0x7ffffff0;
82
+
83
+ explicit JsonReader(StringView input)
84
+ : original_input_(reinterpret_cast<const uint8_t*>(input.data())),
85
+ input_(original_input_),
86
+ remaining_input_(input.size()) {}
87
+
88
+ Status Run();
89
+ uint32_t ReadChar();
90
+ bool IsComplete();
91
+
92
+ size_t CurrentIndex() const { return input_ - original_input_ - 1; }
93
+
94
+ void StringAddChar(uint32_t c);
95
+ void StringAddUtf32(uint32_t c);
96
+
97
+ Json* CreateAndLinkValue();
98
+ bool StartContainer(Json::Type type);
99
+ void EndContainer();
100
+ void SetKey();
101
+ void SetString();
102
+ bool SetNumber();
103
+ void SetTrue();
104
+ void SetFalse();
105
+ void SetNull();
106
+
107
+ const uint8_t* original_input_;
108
+ const uint8_t* input_;
109
+ size_t remaining_input_;
110
+
111
+ State state_ = State::GRPC_JSON_STATE_VALUE_BEGIN;
112
+ bool escaped_string_was_key_ = false;
113
+ bool container_just_begun_ = false;
114
+ uint16_t unicode_char_ = 0;
115
+ uint16_t unicode_high_surrogate_ = 0;
116
+ std::vector<grpc_error*> errors_;
117
+ bool truncated_errors_ = false;
118
+
119
+ Json root_value_;
120
+ std::vector<Json*> stack_;
121
+
122
+ std::string key_;
123
+ std::string string_;
124
+ };
125
+
126
+ void JsonReader::StringAddChar(uint32_t c) {
127
+ string_.push_back(static_cast<uint8_t>(c));
29
128
  }
30
129
 
31
- static void json_reader_string_add_char(grpc_json_reader* reader, uint32_t c) {
32
- reader->vtable->string_add_char(reader->userdata, c);
33
- }
34
-
35
- static void json_reader_string_add_utf32(grpc_json_reader* reader,
36
- uint32_t utf32) {
37
- reader->vtable->string_add_utf32(reader->userdata, utf32);
130
+ void JsonReader::StringAddUtf32(uint32_t c) {
131
+ if (c <= 0x7f) {
132
+ StringAddChar(c);
133
+ } else if (c <= 0x7ff) {
134
+ uint32_t b1 = 0xc0 | ((c >> 6) & 0x1f);
135
+ uint32_t b2 = 0x80 | (c & 0x3f);
136
+ StringAddChar(b1);
137
+ StringAddChar(b2);
138
+ } else if (c <= 0xffff) {
139
+ uint32_t b1 = 0xe0 | ((c >> 12) & 0x0f);
140
+ uint32_t b2 = 0x80 | ((c >> 6) & 0x3f);
141
+ uint32_t b3 = 0x80 | (c & 0x3f);
142
+ StringAddChar(b1);
143
+ StringAddChar(b2);
144
+ StringAddChar(b3);
145
+ } else if (c <= 0x1fffff) {
146
+ uint32_t b1 = 0xf0 | ((c >> 18) & 0x07);
147
+ uint32_t b2 = 0x80 | ((c >> 12) & 0x3f);
148
+ uint32_t b3 = 0x80 | ((c >> 6) & 0x3f);
149
+ uint32_t b4 = 0x80 | (c & 0x3f);
150
+ StringAddChar(b1);
151
+ StringAddChar(b2);
152
+ StringAddChar(b3);
153
+ StringAddChar(b4);
154
+ }
38
155
  }
39
156
 
40
- static uint32_t grpc_json_reader_read_char(grpc_json_reader* reader) {
41
- return reader->vtable->read_char(reader->userdata);
157
+ uint32_t JsonReader::ReadChar() {
158
+ if (remaining_input_ == 0) return GRPC_JSON_READ_CHAR_EOF;
159
+ const uint32_t r = *input_++;
160
+ --remaining_input_;
161
+ if (r == 0) {
162
+ remaining_input_ = 0;
163
+ return GRPC_JSON_READ_CHAR_EOF;
164
+ }
165
+ return r;
42
166
  }
43
167
 
44
- static void json_reader_container_begins(grpc_json_reader* reader,
45
- grpc_json_type type) {
46
- reader->vtable->container_begins(reader->userdata, type);
168
+ Json* JsonReader::CreateAndLinkValue() {
169
+ Json* value;
170
+ if (stack_.empty()) {
171
+ value = &root_value_;
172
+ } else {
173
+ Json* parent = stack_.back();
174
+ if (parent->type() == Json::Type::OBJECT) {
175
+ if (parent->object_value().find(key_) != parent->object_value().end()) {
176
+ if (errors_.size() == GRPC_JSON_MAX_ERRORS) {
177
+ truncated_errors_ = true;
178
+ } else {
179
+ char* msg;
180
+ gpr_asprintf(&msg, "duplicate key \"%s\" at index %" PRIuPTR,
181
+ key_.c_str(), CurrentIndex());
182
+ errors_.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg));
183
+ gpr_free(msg);
184
+ }
185
+ }
186
+ value = &(*parent->mutable_object())[std::move(key_)];
187
+ } else {
188
+ GPR_ASSERT(parent->type() == Json::Type::ARRAY);
189
+ parent->mutable_array()->emplace_back();
190
+ value = &parent->mutable_array()->back();
191
+ }
192
+ }
193
+ return value;
47
194
  }
48
195
 
49
- static grpc_json_type grpc_json_reader_container_ends(
50
- grpc_json_reader* reader) {
51
- return reader->vtable->container_ends(reader->userdata);
196
+ bool JsonReader::StartContainer(Json::Type type) {
197
+ if (stack_.size() == GRPC_JSON_MAX_DEPTH) {
198
+ if (errors_.size() == GRPC_JSON_MAX_ERRORS) {
199
+ truncated_errors_ = true;
200
+ } else {
201
+ char* msg;
202
+ gpr_asprintf(&msg, "exceeded max stack depth (%d) at index %" PRIuPTR,
203
+ GRPC_JSON_MAX_DEPTH, CurrentIndex());
204
+ errors_.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg));
205
+ gpr_free(msg);
206
+ }
207
+ return false;
208
+ }
209
+ Json* value = CreateAndLinkValue();
210
+ if (type == Json::Type::OBJECT) {
211
+ *value = Json::Object();
212
+ } else {
213
+ GPR_ASSERT(type == Json::Type::ARRAY);
214
+ *value = Json::Array();
215
+ }
216
+ stack_.push_back(value);
217
+ return true;
52
218
  }
53
219
 
54
- static void json_reader_set_key(grpc_json_reader* reader) {
55
- reader->vtable->set_key(reader->userdata);
220
+ void JsonReader::EndContainer() {
221
+ GPR_ASSERT(!stack_.empty());
222
+ stack_.pop_back();
56
223
  }
57
224
 
58
- static void json_reader_set_string(grpc_json_reader* reader) {
59
- reader->vtable->set_string(reader->userdata);
225
+ void JsonReader::SetKey() {
226
+ key_ = std::move(string_);
227
+ string_.clear();
60
228
  }
61
229
 
62
- static int json_reader_set_number(grpc_json_reader* reader) {
63
- return reader->vtable->set_number(reader->userdata);
230
+ void JsonReader::SetString() {
231
+ Json* value = CreateAndLinkValue();
232
+ *value = std::move(string_);
233
+ string_.clear();
64
234
  }
65
235
 
66
- static void json_reader_set_true(grpc_json_reader* reader) {
67
- reader->vtable->set_true(reader->userdata);
236
+ bool JsonReader::SetNumber() {
237
+ Json* value = CreateAndLinkValue();
238
+ *value = Json(std::move(string_), /*is_number=*/true);
239
+ string_.clear();
240
+ return true;
68
241
  }
69
242
 
70
- static void json_reader_set_false(grpc_json_reader* reader) {
71
- reader->vtable->set_false(reader->userdata);
243
+ void JsonReader::SetTrue() {
244
+ Json* value = CreateAndLinkValue();
245
+ *value = true;
246
+ string_.clear();
72
247
  }
73
248
 
74
- static void json_reader_set_null(grpc_json_reader* reader) {
75
- reader->vtable->set_null(reader->userdata);
249
+ void JsonReader::SetFalse() {
250
+ Json* value = CreateAndLinkValue();
251
+ *value = false;
252
+ string_.clear();
76
253
  }
77
254
 
78
- /* Call this function to initialize the reader structure. */
79
- void grpc_json_reader_init(grpc_json_reader* reader,
80
- grpc_json_reader_vtable* vtable, void* userdata) {
81
- memset(reader, 0, sizeof(*reader));
82
- reader->vtable = vtable;
83
- reader->userdata = userdata;
84
- json_reader_string_clear(reader);
85
- reader->state = GRPC_JSON_STATE_VALUE_BEGIN;
86
- }
255
+ void JsonReader::SetNull() { CreateAndLinkValue(); }
87
256
 
88
- int grpc_json_reader_is_complete(grpc_json_reader* reader) {
89
- return ((reader->depth == 0) &&
90
- ((reader->state == GRPC_JSON_STATE_END) ||
91
- (reader->state == GRPC_JSON_STATE_VALUE_END)));
257
+ bool JsonReader::IsComplete() {
258
+ return (stack_.empty() && (state_ == State::GRPC_JSON_STATE_END ||
259
+ state_ == State::GRPC_JSON_STATE_VALUE_END));
92
260
  }
93
261
 
94
- grpc_json_reader_status grpc_json_reader_run(grpc_json_reader* reader) {
95
- uint32_t c, success;
262
+ /* Call this function to start parsing the input. It will return the following:
263
+ * . GRPC_JSON_DONE if the input got eof, and the parsing finished
264
+ * successfully.
265
+ * . GRPC_JSON_PARSE_ERROR if the input was somehow invalid.
266
+ * . GRPC_JSON_INTERNAL_ERROR if the parser somehow ended into an invalid
267
+ * internal state.
268
+ */
269
+ JsonReader::Status JsonReader::Run() {
270
+ uint32_t c;
96
271
 
97
272
  /* This state-machine is a strict implementation of ECMA-404 */
98
- for (;;) {
99
- c = grpc_json_reader_read_char(reader);
273
+ while (true) {
274
+ c = ReadChar();
100
275
  switch (c) {
101
- /* Let's process the error cases first. */
102
- case GRPC_JSON_READ_CHAR_ERROR:
103
- return GRPC_JSON_READ_ERROR;
104
-
105
- case GRPC_JSON_READ_CHAR_EAGAIN:
106
- return GRPC_JSON_EAGAIN;
107
-
276
+ /* Let's process the error case first. */
108
277
  case GRPC_JSON_READ_CHAR_EOF:
109
- if (grpc_json_reader_is_complete(reader)) {
110
- return GRPC_JSON_DONE;
278
+ if (IsComplete()) {
279
+ return Status::GRPC_JSON_DONE;
111
280
  } else {
112
- return GRPC_JSON_PARSE_ERROR;
281
+ return Status::GRPC_JSON_PARSE_ERROR;
113
282
  }
114
283
  break;
115
284
 
@@ -118,34 +287,33 @@ grpc_json_reader_status grpc_json_reader_run(grpc_json_reader* reader) {
118
287
  case '\t':
119
288
  case '\n':
120
289
  case '\r':
121
- switch (reader->state) {
122
- case GRPC_JSON_STATE_OBJECT_KEY_BEGIN:
123
- case GRPC_JSON_STATE_OBJECT_KEY_END:
124
- case GRPC_JSON_STATE_VALUE_BEGIN:
125
- case GRPC_JSON_STATE_VALUE_END:
126
- case GRPC_JSON_STATE_END:
127
- break;
128
-
129
- case GRPC_JSON_STATE_OBJECT_KEY_STRING:
130
- case GRPC_JSON_STATE_VALUE_STRING:
131
- if (c != ' ') return GRPC_JSON_PARSE_ERROR;
132
- if (reader->unicode_high_surrogate != 0)
133
- return GRPC_JSON_PARSE_ERROR;
134
- json_reader_string_add_char(reader, c);
290
+ switch (state_) {
291
+ case State::GRPC_JSON_STATE_OBJECT_KEY_BEGIN:
292
+ case State::GRPC_JSON_STATE_OBJECT_KEY_END:
293
+ case State::GRPC_JSON_STATE_VALUE_BEGIN:
294
+ case State::GRPC_JSON_STATE_VALUE_END:
295
+ case State::GRPC_JSON_STATE_END:
296
+ break;
297
+
298
+ case State::GRPC_JSON_STATE_OBJECT_KEY_STRING:
299
+ case State::GRPC_JSON_STATE_VALUE_STRING:
300
+ if (c != ' ') return Status::GRPC_JSON_PARSE_ERROR;
301
+ if (unicode_high_surrogate_ != 0) {
302
+ return Status::GRPC_JSON_PARSE_ERROR;
303
+ }
304
+ StringAddChar(c);
135
305
  break;
136
306
 
137
- case GRPC_JSON_STATE_VALUE_NUMBER:
138
- case GRPC_JSON_STATE_VALUE_NUMBER_WITH_DECIMAL:
139
- case GRPC_JSON_STATE_VALUE_NUMBER_ZERO:
140
- case GRPC_JSON_STATE_VALUE_NUMBER_EPM:
141
- success = static_cast<uint32_t>(json_reader_set_number(reader));
142
- if (!success) return GRPC_JSON_PARSE_ERROR;
143
- json_reader_string_clear(reader);
144
- reader->state = GRPC_JSON_STATE_VALUE_END;
307
+ case State::GRPC_JSON_STATE_VALUE_NUMBER:
308
+ case State::GRPC_JSON_STATE_VALUE_NUMBER_WITH_DECIMAL:
309
+ case State::GRPC_JSON_STATE_VALUE_NUMBER_ZERO:
310
+ case State::GRPC_JSON_STATE_VALUE_NUMBER_EPM:
311
+ if (!SetNumber()) return Status::GRPC_JSON_PARSE_ERROR;
312
+ state_ = State::GRPC_JSON_STATE_VALUE_END;
145
313
  break;
146
314
 
147
315
  default:
148
- return GRPC_JSON_PARSE_ERROR;
316
+ return Status::GRPC_JSON_PARSE_ERROR;
149
317
  }
150
318
  break;
151
319
 
@@ -153,182 +321,171 @@ grpc_json_reader_status grpc_json_reader_run(grpc_json_reader* reader) {
153
321
  case ',':
154
322
  case '}':
155
323
  case ']':
156
- switch (reader->state) {
157
- case GRPC_JSON_STATE_OBJECT_KEY_STRING:
158
- case GRPC_JSON_STATE_VALUE_STRING:
159
- if (reader->unicode_high_surrogate != 0) {
160
- return GRPC_JSON_PARSE_ERROR;
324
+ switch (state_) {
325
+ case State::GRPC_JSON_STATE_OBJECT_KEY_STRING:
326
+ case State::GRPC_JSON_STATE_VALUE_STRING:
327
+ if (unicode_high_surrogate_ != 0) {
328
+ return Status::GRPC_JSON_PARSE_ERROR;
161
329
  }
162
- json_reader_string_add_char(reader, c);
163
- break;
164
-
165
- case GRPC_JSON_STATE_VALUE_NUMBER:
166
- case GRPC_JSON_STATE_VALUE_NUMBER_WITH_DECIMAL:
167
- case GRPC_JSON_STATE_VALUE_NUMBER_ZERO:
168
- case GRPC_JSON_STATE_VALUE_NUMBER_EPM:
169
- if (reader->depth == 0) {
170
- return GRPC_JSON_PARSE_ERROR;
171
- } else if ((c == '}') && !reader->in_object) {
172
- return GRPC_JSON_PARSE_ERROR;
173
- } else if ((c == ']') && !reader->in_array) {
174
- return GRPC_JSON_PARSE_ERROR;
330
+ StringAddChar(c);
331
+ break;
332
+
333
+ case State::GRPC_JSON_STATE_VALUE_NUMBER:
334
+ case State::GRPC_JSON_STATE_VALUE_NUMBER_WITH_DECIMAL:
335
+ case State::GRPC_JSON_STATE_VALUE_NUMBER_ZERO:
336
+ case State::GRPC_JSON_STATE_VALUE_NUMBER_EPM:
337
+ if (stack_.empty()) {
338
+ return Status::GRPC_JSON_PARSE_ERROR;
339
+ } else if (c == '}' &&
340
+ stack_.back()->type() != Json::Type::OBJECT) {
341
+ return Status::GRPC_JSON_PARSE_ERROR;
342
+ return Status::GRPC_JSON_PARSE_ERROR;
343
+ } else if (c == ']' && stack_.back()->type() != Json::Type::ARRAY) {
344
+ return Status::GRPC_JSON_PARSE_ERROR;
175
345
  }
176
- success = static_cast<uint32_t>(json_reader_set_number(reader));
177
- if (!success) return GRPC_JSON_PARSE_ERROR;
178
- json_reader_string_clear(reader);
179
- reader->state = GRPC_JSON_STATE_VALUE_END;
346
+ if (!SetNumber()) return Status::GRPC_JSON_PARSE_ERROR;
347
+ state_ = State::GRPC_JSON_STATE_VALUE_END;
180
348
  /* The missing break here is intentional. */
181
349
  /* fallthrough */
182
350
 
183
- case GRPC_JSON_STATE_VALUE_END:
184
- case GRPC_JSON_STATE_OBJECT_KEY_BEGIN:
185
- case GRPC_JSON_STATE_VALUE_BEGIN:
351
+ case State::GRPC_JSON_STATE_VALUE_END:
352
+ case State::GRPC_JSON_STATE_OBJECT_KEY_BEGIN:
353
+ case State::GRPC_JSON_STATE_VALUE_BEGIN:
186
354
  if (c == ',') {
187
- if (reader->state != GRPC_JSON_STATE_VALUE_END) {
188
- return GRPC_JSON_PARSE_ERROR;
355
+ if (state_ != State::GRPC_JSON_STATE_VALUE_END) {
356
+ return Status::GRPC_JSON_PARSE_ERROR;
189
357
  }
190
- if (reader->in_object) {
191
- reader->state = GRPC_JSON_STATE_OBJECT_KEY_BEGIN;
192
- } else if (reader->in_array) {
193
- reader->state = GRPC_JSON_STATE_VALUE_BEGIN;
358
+ if (!stack_.empty() &&
359
+ stack_.back()->type() == Json::Type::OBJECT) {
360
+ state_ = State::GRPC_JSON_STATE_OBJECT_KEY_BEGIN;
361
+ } else if (!stack_.empty() &&
362
+ stack_.back()->type() == Json::Type::ARRAY) {
363
+ state_ = State::GRPC_JSON_STATE_VALUE_BEGIN;
194
364
  } else {
195
- return GRPC_JSON_PARSE_ERROR;
365
+ return Status::GRPC_JSON_PARSE_ERROR;
196
366
  }
197
367
  } else {
198
- if (reader->depth-- == 0) return GRPC_JSON_PARSE_ERROR;
199
- if ((c == '}') && !reader->in_object) {
200
- return GRPC_JSON_PARSE_ERROR;
368
+ if (stack_.empty()) {
369
+ return Status::GRPC_JSON_PARSE_ERROR;
370
+ }
371
+ if (c == '}' && stack_.back()->type() != Json::Type::OBJECT) {
372
+ return Status::GRPC_JSON_PARSE_ERROR;
373
+ }
374
+ if (c == '}' &&
375
+ state_ == State::GRPC_JSON_STATE_OBJECT_KEY_BEGIN &&
376
+ !container_just_begun_) {
377
+ return Status::GRPC_JSON_PARSE_ERROR;
201
378
  }
202
- if ((c == '}') &&
203
- (reader->state == GRPC_JSON_STATE_OBJECT_KEY_BEGIN) &&
204
- !reader->container_just_begun) {
205
- return GRPC_JSON_PARSE_ERROR;
379
+ if (c == ']' && stack_.back()->type() != Json::Type::ARRAY) {
380
+ return Status::GRPC_JSON_PARSE_ERROR;
206
381
  }
207
- if ((c == ']') && !reader->in_array) return GRPC_JSON_PARSE_ERROR;
208
- if ((c == ']') &&
209
- (reader->state == GRPC_JSON_STATE_VALUE_BEGIN) &&
210
- !reader->container_just_begun) {
211
- return GRPC_JSON_PARSE_ERROR;
382
+ if (c == ']' && state_ == State::GRPC_JSON_STATE_VALUE_BEGIN &&
383
+ !container_just_begun_) {
384
+ return Status::GRPC_JSON_PARSE_ERROR;
212
385
  }
213
- reader->state = GRPC_JSON_STATE_VALUE_END;
214
- switch (grpc_json_reader_container_ends(reader)) {
215
- case GRPC_JSON_OBJECT:
216
- reader->in_object = 1;
217
- reader->in_array = 0;
218
- break;
219
- case GRPC_JSON_ARRAY:
220
- reader->in_object = 0;
221
- reader->in_array = 1;
222
- break;
223
- case GRPC_JSON_TOP_LEVEL:
224
- GPR_ASSERT(reader->depth == 0);
225
- reader->in_object = 0;
226
- reader->in_array = 0;
227
- reader->state = GRPC_JSON_STATE_END;
228
- break;
229
- default:
230
- GPR_UNREACHABLE_CODE(return GRPC_JSON_INTERNAL_ERROR);
386
+ state_ = State::GRPC_JSON_STATE_VALUE_END;
387
+ EndContainer();
388
+ if (stack_.empty()) {
389
+ state_ = State::GRPC_JSON_STATE_END;
231
390
  }
232
391
  }
233
392
  break;
234
393
 
235
394
  default:
236
- return GRPC_JSON_PARSE_ERROR;
395
+ return Status::GRPC_JSON_PARSE_ERROR;
237
396
  }
238
397
  break;
239
398
 
240
399
  /* In-string escaping. */
241
400
  case '\\':
242
- switch (reader->state) {
243
- case GRPC_JSON_STATE_OBJECT_KEY_STRING:
244
- reader->escaped_string_was_key = 1;
245
- reader->state = GRPC_JSON_STATE_STRING_ESCAPE;
401
+ switch (state_) {
402
+ case State::GRPC_JSON_STATE_OBJECT_KEY_STRING:
403
+ escaped_string_was_key_ = true;
404
+ state_ = State::GRPC_JSON_STATE_STRING_ESCAPE;
246
405
  break;
247
406
 
248
- case GRPC_JSON_STATE_VALUE_STRING:
249
- reader->escaped_string_was_key = 0;
250
- reader->state = GRPC_JSON_STATE_STRING_ESCAPE;
407
+ case State::GRPC_JSON_STATE_VALUE_STRING:
408
+ escaped_string_was_key_ = false;
409
+ state_ = State::GRPC_JSON_STATE_STRING_ESCAPE;
251
410
  break;
252
411
 
253
412
  /* This is the \\ case. */
254
- case GRPC_JSON_STATE_STRING_ESCAPE:
255
- if (reader->unicode_high_surrogate != 0)
256
- return GRPC_JSON_PARSE_ERROR;
257
- json_reader_string_add_char(reader, '\\');
258
- if (reader->escaped_string_was_key) {
259
- reader->state = GRPC_JSON_STATE_OBJECT_KEY_STRING;
413
+ case State::GRPC_JSON_STATE_STRING_ESCAPE:
414
+ if (unicode_high_surrogate_ != 0)
415
+ return Status::GRPC_JSON_PARSE_ERROR;
416
+ StringAddChar('\\');
417
+ if (escaped_string_was_key_) {
418
+ state_ = State::GRPC_JSON_STATE_OBJECT_KEY_STRING;
260
419
  } else {
261
- reader->state = GRPC_JSON_STATE_VALUE_STRING;
420
+ state_ = State::GRPC_JSON_STATE_VALUE_STRING;
262
421
  }
263
422
  break;
264
423
 
265
424
  default:
266
- return GRPC_JSON_PARSE_ERROR;
425
+ return Status::GRPC_JSON_PARSE_ERROR;
267
426
  }
268
427
  break;
269
428
 
270
429
  default:
271
- reader->container_just_begun = 0;
272
- switch (reader->state) {
273
- case GRPC_JSON_STATE_OBJECT_KEY_BEGIN:
274
- if (c != '"') return GRPC_JSON_PARSE_ERROR;
275
- reader->state = GRPC_JSON_STATE_OBJECT_KEY_STRING;
430
+ container_just_begun_ = false;
431
+ switch (state_) {
432
+ case State::GRPC_JSON_STATE_OBJECT_KEY_BEGIN:
433
+ if (c != '"') return Status::GRPC_JSON_PARSE_ERROR;
434
+ state_ = State::GRPC_JSON_STATE_OBJECT_KEY_STRING;
276
435
  break;
277
436
 
278
- case GRPC_JSON_STATE_OBJECT_KEY_STRING:
279
- if (reader->unicode_high_surrogate != 0) {
280
- return GRPC_JSON_PARSE_ERROR;
437
+ case State::GRPC_JSON_STATE_OBJECT_KEY_STRING:
438
+ if (unicode_high_surrogate_ != 0) {
439
+ return Status::GRPC_JSON_PARSE_ERROR;
281
440
  }
282
441
  if (c == '"') {
283
- reader->state = GRPC_JSON_STATE_OBJECT_KEY_END;
284
- json_reader_set_key(reader);
285
- json_reader_string_clear(reader);
442
+ state_ = State::GRPC_JSON_STATE_OBJECT_KEY_END;
443
+ SetKey();
286
444
  } else {
287
- if (c < 32) return GRPC_JSON_PARSE_ERROR;
288
- json_reader_string_add_char(reader, c);
445
+ if (c < 32) return Status::GRPC_JSON_PARSE_ERROR;
446
+ StringAddChar(c);
289
447
  }
290
448
  break;
291
449
 
292
- case GRPC_JSON_STATE_VALUE_STRING:
293
- if (reader->unicode_high_surrogate != 0) {
294
- return GRPC_JSON_PARSE_ERROR;
450
+ case State::GRPC_JSON_STATE_VALUE_STRING:
451
+ if (unicode_high_surrogate_ != 0) {
452
+ return Status::GRPC_JSON_PARSE_ERROR;
295
453
  }
296
454
  if (c == '"') {
297
- reader->state = GRPC_JSON_STATE_VALUE_END;
298
- json_reader_set_string(reader);
299
- json_reader_string_clear(reader);
455
+ state_ = State::GRPC_JSON_STATE_VALUE_END;
456
+ SetString();
300
457
  } else {
301
- if (c < 32) return GRPC_JSON_PARSE_ERROR;
302
- json_reader_string_add_char(reader, c);
458
+ if (c < 32) return Status::GRPC_JSON_PARSE_ERROR;
459
+ StringAddChar(c);
303
460
  }
304
461
  break;
305
462
 
306
- case GRPC_JSON_STATE_OBJECT_KEY_END:
307
- if (c != ':') return GRPC_JSON_PARSE_ERROR;
308
- reader->state = GRPC_JSON_STATE_VALUE_BEGIN;
463
+ case State::GRPC_JSON_STATE_OBJECT_KEY_END:
464
+ if (c != ':') return Status::GRPC_JSON_PARSE_ERROR;
465
+ state_ = State::GRPC_JSON_STATE_VALUE_BEGIN;
309
466
  break;
310
467
 
311
- case GRPC_JSON_STATE_VALUE_BEGIN:
468
+ case State::GRPC_JSON_STATE_VALUE_BEGIN:
312
469
  switch (c) {
313
470
  case 't':
314
- reader->state = GRPC_JSON_STATE_VALUE_TRUE_R;
471
+ state_ = State::GRPC_JSON_STATE_VALUE_TRUE_R;
315
472
  break;
316
473
 
317
474
  case 'f':
318
- reader->state = GRPC_JSON_STATE_VALUE_FALSE_A;
475
+ state_ = State::GRPC_JSON_STATE_VALUE_FALSE_A;
319
476
  break;
320
477
 
321
478
  case 'n':
322
- reader->state = GRPC_JSON_STATE_VALUE_NULL_U;
479
+ state_ = State::GRPC_JSON_STATE_VALUE_NULL_U;
323
480
  break;
324
481
 
325
482
  case '"':
326
- reader->state = GRPC_JSON_STATE_VALUE_STRING;
483
+ state_ = State::GRPC_JSON_STATE_VALUE_STRING;
327
484
  break;
328
485
 
329
486
  case '0':
330
- json_reader_string_add_char(reader, c);
331
- reader->state = GRPC_JSON_STATE_VALUE_NUMBER_ZERO;
487
+ StringAddChar(c);
488
+ state_ = State::GRPC_JSON_STATE_VALUE_NUMBER_ZERO;
332
489
  break;
333
490
 
334
491
  case '1':
@@ -341,73 +498,71 @@ grpc_json_reader_status grpc_json_reader_run(grpc_json_reader* reader) {
341
498
  case '8':
342
499
  case '9':
343
500
  case '-':
344
- json_reader_string_add_char(reader, c);
345
- reader->state = GRPC_JSON_STATE_VALUE_NUMBER;
501
+ StringAddChar(c);
502
+ state_ = State::GRPC_JSON_STATE_VALUE_NUMBER;
346
503
  break;
347
504
 
348
505
  case '{':
349
- reader->container_just_begun = 1;
350
- json_reader_container_begins(reader, GRPC_JSON_OBJECT);
351
- reader->depth++;
352
- reader->state = GRPC_JSON_STATE_OBJECT_KEY_BEGIN;
353
- reader->in_object = 1;
354
- reader->in_array = 0;
506
+ container_just_begun_ = true;
507
+ if (!StartContainer(Json::Type::OBJECT)) {
508
+ return Status::GRPC_JSON_PARSE_ERROR;
509
+ }
510
+ state_ = State::GRPC_JSON_STATE_OBJECT_KEY_BEGIN;
355
511
  break;
356
512
 
357
513
  case '[':
358
- reader->container_just_begun = 1;
359
- json_reader_container_begins(reader, GRPC_JSON_ARRAY);
360
- reader->depth++;
361
- reader->in_object = 0;
362
- reader->in_array = 1;
514
+ container_just_begun_ = true;
515
+ if (!StartContainer(Json::Type::ARRAY)) {
516
+ return Status::GRPC_JSON_PARSE_ERROR;
517
+ }
363
518
  break;
364
519
  default:
365
- return GRPC_JSON_PARSE_ERROR;
520
+ return Status::GRPC_JSON_PARSE_ERROR;
366
521
  }
367
522
  break;
368
523
 
369
- case GRPC_JSON_STATE_STRING_ESCAPE:
370
- if (reader->escaped_string_was_key) {
371
- reader->state = GRPC_JSON_STATE_OBJECT_KEY_STRING;
524
+ case State::GRPC_JSON_STATE_STRING_ESCAPE:
525
+ if (escaped_string_was_key_) {
526
+ state_ = State::GRPC_JSON_STATE_OBJECT_KEY_STRING;
372
527
  } else {
373
- reader->state = GRPC_JSON_STATE_VALUE_STRING;
528
+ state_ = State::GRPC_JSON_STATE_VALUE_STRING;
374
529
  }
375
- if (reader->unicode_high_surrogate && c != 'u') {
376
- return GRPC_JSON_PARSE_ERROR;
530
+ if (unicode_high_surrogate_ && c != 'u') {
531
+ return Status::GRPC_JSON_PARSE_ERROR;
377
532
  }
378
533
  switch (c) {
379
534
  case '"':
380
535
  case '/':
381
- json_reader_string_add_char(reader, c);
536
+ StringAddChar(c);
382
537
  break;
383
538
  case 'b':
384
- json_reader_string_add_char(reader, '\b');
539
+ StringAddChar('\b');
385
540
  break;
386
541
  case 'f':
387
- json_reader_string_add_char(reader, '\f');
542
+ StringAddChar('\f');
388
543
  break;
389
544
  case 'n':
390
- json_reader_string_add_char(reader, '\n');
545
+ StringAddChar('\n');
391
546
  break;
392
547
  case 'r':
393
- json_reader_string_add_char(reader, '\r');
548
+ StringAddChar('\r');
394
549
  break;
395
550
  case 't':
396
- json_reader_string_add_char(reader, '\t');
551
+ StringAddChar('\t');
397
552
  break;
398
553
  case 'u':
399
- reader->state = GRPC_JSON_STATE_STRING_ESCAPE_U1;
400
- reader->unicode_char = 0;
554
+ state_ = State::GRPC_JSON_STATE_STRING_ESCAPE_U1;
555
+ unicode_char_ = 0;
401
556
  break;
402
557
  default:
403
- return GRPC_JSON_PARSE_ERROR;
558
+ return Status::GRPC_JSON_PARSE_ERROR;
404
559
  }
405
560
  break;
406
561
 
407
- case GRPC_JSON_STATE_STRING_ESCAPE_U1:
408
- case GRPC_JSON_STATE_STRING_ESCAPE_U2:
409
- case GRPC_JSON_STATE_STRING_ESCAPE_U3:
410
- case GRPC_JSON_STATE_STRING_ESCAPE_U4:
562
+ case State::GRPC_JSON_STATE_STRING_ESCAPE_U1:
563
+ case State::GRPC_JSON_STATE_STRING_ESCAPE_U2:
564
+ case State::GRPC_JSON_STATE_STRING_ESCAPE_U3:
565
+ case State::GRPC_JSON_STATE_STRING_ESCAPE_U4:
411
566
  if ((c >= '0') && (c <= '9')) {
412
567
  c -= '0';
413
568
  } else if ((c >= 'A') && (c <= 'F')) {
@@ -415,62 +570,60 @@ grpc_json_reader_status grpc_json_reader_run(grpc_json_reader* reader) {
415
570
  } else if ((c >= 'a') && (c <= 'f')) {
416
571
  c -= 'a' - 10;
417
572
  } else {
418
- return GRPC_JSON_PARSE_ERROR;
573
+ return Status::GRPC_JSON_PARSE_ERROR;
419
574
  }
420
- reader->unicode_char =
421
- static_cast<uint16_t>(reader->unicode_char << 4);
422
- reader->unicode_char =
423
- static_cast<uint16_t>(reader->unicode_char | c);
424
-
425
- switch (reader->state) {
426
- case GRPC_JSON_STATE_STRING_ESCAPE_U1:
427
- reader->state = GRPC_JSON_STATE_STRING_ESCAPE_U2;
575
+ unicode_char_ = static_cast<uint16_t>(unicode_char_ << 4);
576
+ unicode_char_ = static_cast<uint16_t>(unicode_char_ | c);
577
+
578
+ switch (state_) {
579
+ case State::GRPC_JSON_STATE_STRING_ESCAPE_U1:
580
+ state_ = State::GRPC_JSON_STATE_STRING_ESCAPE_U2;
428
581
  break;
429
- case GRPC_JSON_STATE_STRING_ESCAPE_U2:
430
- reader->state = GRPC_JSON_STATE_STRING_ESCAPE_U3;
582
+ case State::GRPC_JSON_STATE_STRING_ESCAPE_U2:
583
+ state_ = State::GRPC_JSON_STATE_STRING_ESCAPE_U3;
431
584
  break;
432
- case GRPC_JSON_STATE_STRING_ESCAPE_U3:
433
- reader->state = GRPC_JSON_STATE_STRING_ESCAPE_U4;
585
+ case State::GRPC_JSON_STATE_STRING_ESCAPE_U3:
586
+ state_ = State::GRPC_JSON_STATE_STRING_ESCAPE_U4;
434
587
  break;
435
- case GRPC_JSON_STATE_STRING_ESCAPE_U4:
588
+ case State::GRPC_JSON_STATE_STRING_ESCAPE_U4:
436
589
  /* See grpc_json_writer_escape_string to have a description
437
590
  * of what's going on here.
438
591
  */
439
- if ((reader->unicode_char & 0xfc00) == 0xd800) {
592
+ if ((unicode_char_ & 0xfc00) == 0xd800) {
440
593
  /* high surrogate utf-16 */
441
- if (reader->unicode_high_surrogate != 0)
442
- return GRPC_JSON_PARSE_ERROR;
443
- reader->unicode_high_surrogate = reader->unicode_char;
444
- } else if ((reader->unicode_char & 0xfc00) == 0xdc00) {
594
+ if (unicode_high_surrogate_ != 0)
595
+ return Status::GRPC_JSON_PARSE_ERROR;
596
+ unicode_high_surrogate_ = unicode_char_;
597
+ } else if ((unicode_char_ & 0xfc00) == 0xdc00) {
445
598
  /* low surrogate utf-16 */
446
599
  uint32_t utf32;
447
- if (reader->unicode_high_surrogate == 0)
448
- return GRPC_JSON_PARSE_ERROR;
600
+ if (unicode_high_surrogate_ == 0)
601
+ return Status::GRPC_JSON_PARSE_ERROR;
449
602
  utf32 = 0x10000;
450
603
  utf32 += static_cast<uint32_t>(
451
- (reader->unicode_high_surrogate - 0xd800) * 0x400);
452
- utf32 += static_cast<uint32_t>(reader->unicode_char - 0xdc00);
453
- json_reader_string_add_utf32(reader, utf32);
454
- reader->unicode_high_surrogate = 0;
604
+ (unicode_high_surrogate_ - 0xd800) * 0x400);
605
+ utf32 += static_cast<uint32_t>(unicode_char_ - 0xdc00);
606
+ StringAddUtf32(utf32);
607
+ unicode_high_surrogate_ = 0;
455
608
  } else {
456
609
  /* anything else */
457
- if (reader->unicode_high_surrogate != 0)
458
- return GRPC_JSON_PARSE_ERROR;
459
- json_reader_string_add_utf32(reader, reader->unicode_char);
610
+ if (unicode_high_surrogate_ != 0)
611
+ return Status::GRPC_JSON_PARSE_ERROR;
612
+ StringAddUtf32(unicode_char_);
460
613
  }
461
- if (reader->escaped_string_was_key) {
462
- reader->state = GRPC_JSON_STATE_OBJECT_KEY_STRING;
614
+ if (escaped_string_was_key_) {
615
+ state_ = State::GRPC_JSON_STATE_OBJECT_KEY_STRING;
463
616
  } else {
464
- reader->state = GRPC_JSON_STATE_VALUE_STRING;
617
+ state_ = State::GRPC_JSON_STATE_VALUE_STRING;
465
618
  }
466
619
  break;
467
620
  default:
468
- GPR_UNREACHABLE_CODE(return GRPC_JSON_INTERNAL_ERROR);
621
+ GPR_UNREACHABLE_CODE(return Status::GRPC_JSON_INTERNAL_ERROR);
469
622
  }
470
623
  break;
471
624
 
472
- case GRPC_JSON_STATE_VALUE_NUMBER:
473
- json_reader_string_add_char(reader, c);
625
+ case State::GRPC_JSON_STATE_VALUE_NUMBER:
626
+ StringAddChar(c);
474
627
  switch (c) {
475
628
  case '0':
476
629
  case '1':
@@ -485,18 +638,18 @@ grpc_json_reader_status grpc_json_reader_run(grpc_json_reader* reader) {
485
638
  break;
486
639
  case 'e':
487
640
  case 'E':
488
- reader->state = GRPC_JSON_STATE_VALUE_NUMBER_E;
641
+ state_ = State::GRPC_JSON_STATE_VALUE_NUMBER_E;
489
642
  break;
490
643
  case '.':
491
- reader->state = GRPC_JSON_STATE_VALUE_NUMBER_DOT;
644
+ state_ = State::GRPC_JSON_STATE_VALUE_NUMBER_DOT;
492
645
  break;
493
646
  default:
494
- return GRPC_JSON_PARSE_ERROR;
647
+ return Status::GRPC_JSON_PARSE_ERROR;
495
648
  }
496
649
  break;
497
650
 
498
- case GRPC_JSON_STATE_VALUE_NUMBER_WITH_DECIMAL:
499
- json_reader_string_add_char(reader, c);
651
+ case State::GRPC_JSON_STATE_VALUE_NUMBER_WITH_DECIMAL:
652
+ StringAddChar(c);
500
653
  switch (c) {
501
654
  case '0':
502
655
  case '1':
@@ -511,21 +664,21 @@ grpc_json_reader_status grpc_json_reader_run(grpc_json_reader* reader) {
511
664
  break;
512
665
  case 'e':
513
666
  case 'E':
514
- reader->state = GRPC_JSON_STATE_VALUE_NUMBER_E;
667
+ state_ = State::GRPC_JSON_STATE_VALUE_NUMBER_E;
515
668
  break;
516
669
  default:
517
- return GRPC_JSON_PARSE_ERROR;
670
+ return Status::GRPC_JSON_PARSE_ERROR;
518
671
  }
519
672
  break;
520
673
 
521
- case GRPC_JSON_STATE_VALUE_NUMBER_ZERO:
522
- if (c != '.') return GRPC_JSON_PARSE_ERROR;
523
- json_reader_string_add_char(reader, c);
524
- reader->state = GRPC_JSON_STATE_VALUE_NUMBER_DOT;
674
+ case State::GRPC_JSON_STATE_VALUE_NUMBER_ZERO:
675
+ if (c != '.') return Status::GRPC_JSON_PARSE_ERROR;
676
+ StringAddChar(c);
677
+ state_ = State::GRPC_JSON_STATE_VALUE_NUMBER_DOT;
525
678
  break;
526
679
 
527
- case GRPC_JSON_STATE_VALUE_NUMBER_DOT:
528
- json_reader_string_add_char(reader, c);
680
+ case State::GRPC_JSON_STATE_VALUE_NUMBER_DOT:
681
+ StringAddChar(c);
529
682
  switch (c) {
530
683
  case '0':
531
684
  case '1':
@@ -537,15 +690,15 @@ grpc_json_reader_status grpc_json_reader_run(grpc_json_reader* reader) {
537
690
  case '7':
538
691
  case '8':
539
692
  case '9':
540
- reader->state = GRPC_JSON_STATE_VALUE_NUMBER_WITH_DECIMAL;
693
+ state_ = State::GRPC_JSON_STATE_VALUE_NUMBER_WITH_DECIMAL;
541
694
  break;
542
695
  default:
543
- return GRPC_JSON_PARSE_ERROR;
696
+ return Status::GRPC_JSON_PARSE_ERROR;
544
697
  }
545
698
  break;
546
699
 
547
- case GRPC_JSON_STATE_VALUE_NUMBER_E:
548
- json_reader_string_add_char(reader, c);
700
+ case State::GRPC_JSON_STATE_VALUE_NUMBER_E:
701
+ StringAddChar(c);
549
702
  switch (c) {
550
703
  case '0':
551
704
  case '1':
@@ -559,15 +712,15 @@ grpc_json_reader_status grpc_json_reader_run(grpc_json_reader* reader) {
559
712
  case '9':
560
713
  case '+':
561
714
  case '-':
562
- reader->state = GRPC_JSON_STATE_VALUE_NUMBER_EPM;
715
+ state_ = State::GRPC_JSON_STATE_VALUE_NUMBER_EPM;
563
716
  break;
564
717
  default:
565
- return GRPC_JSON_PARSE_ERROR;
718
+ return Status::GRPC_JSON_PARSE_ERROR;
566
719
  }
567
720
  break;
568
721
 
569
- case GRPC_JSON_STATE_VALUE_NUMBER_EPM:
570
- json_reader_string_add_char(reader, c);
722
+ case State::GRPC_JSON_STATE_VALUE_NUMBER_EPM:
723
+ StringAddChar(c);
571
724
  switch (c) {
572
725
  case '0':
573
726
  case '1':
@@ -581,83 +734,122 @@ grpc_json_reader_status grpc_json_reader_run(grpc_json_reader* reader) {
581
734
  case '9':
582
735
  break;
583
736
  default:
584
- return GRPC_JSON_PARSE_ERROR;
737
+ return Status::GRPC_JSON_PARSE_ERROR;
585
738
  }
586
739
  break;
587
740
 
588
- case GRPC_JSON_STATE_VALUE_TRUE_R:
589
- if (c != 'r') return GRPC_JSON_PARSE_ERROR;
590
- reader->state = GRPC_JSON_STATE_VALUE_TRUE_U;
741
+ case State::GRPC_JSON_STATE_VALUE_TRUE_R:
742
+ if (c != 'r') return Status::GRPC_JSON_PARSE_ERROR;
743
+ state_ = State::GRPC_JSON_STATE_VALUE_TRUE_U;
591
744
  break;
592
745
 
593
- case GRPC_JSON_STATE_VALUE_TRUE_U:
594
- if (c != 'u') return GRPC_JSON_PARSE_ERROR;
595
- reader->state = GRPC_JSON_STATE_VALUE_TRUE_E;
746
+ case State::GRPC_JSON_STATE_VALUE_TRUE_U:
747
+ if (c != 'u') return Status::GRPC_JSON_PARSE_ERROR;
748
+ state_ = State::GRPC_JSON_STATE_VALUE_TRUE_E;
596
749
  break;
597
750
 
598
- case GRPC_JSON_STATE_VALUE_TRUE_E:
599
- if (c != 'e') return GRPC_JSON_PARSE_ERROR;
600
- json_reader_set_true(reader);
601
- reader->state = GRPC_JSON_STATE_VALUE_END;
751
+ case State::GRPC_JSON_STATE_VALUE_TRUE_E:
752
+ if (c != 'e') return Status::GRPC_JSON_PARSE_ERROR;
753
+ SetTrue();
754
+ state_ = State::GRPC_JSON_STATE_VALUE_END;
602
755
  break;
603
756
 
604
- case GRPC_JSON_STATE_VALUE_FALSE_A:
605
- if (c != 'a') return GRPC_JSON_PARSE_ERROR;
606
- reader->state = GRPC_JSON_STATE_VALUE_FALSE_L;
757
+ case State::GRPC_JSON_STATE_VALUE_FALSE_A:
758
+ if (c != 'a') return Status::GRPC_JSON_PARSE_ERROR;
759
+ state_ = State::GRPC_JSON_STATE_VALUE_FALSE_L;
607
760
  break;
608
761
 
609
- case GRPC_JSON_STATE_VALUE_FALSE_L:
610
- if (c != 'l') return GRPC_JSON_PARSE_ERROR;
611
- reader->state = GRPC_JSON_STATE_VALUE_FALSE_S;
762
+ case State::GRPC_JSON_STATE_VALUE_FALSE_L:
763
+ if (c != 'l') return Status::GRPC_JSON_PARSE_ERROR;
764
+ state_ = State::GRPC_JSON_STATE_VALUE_FALSE_S;
612
765
  break;
613
766
 
614
- case GRPC_JSON_STATE_VALUE_FALSE_S:
615
- if (c != 's') return GRPC_JSON_PARSE_ERROR;
616
- reader->state = GRPC_JSON_STATE_VALUE_FALSE_E;
767
+ case State::GRPC_JSON_STATE_VALUE_FALSE_S:
768
+ if (c != 's') return Status::GRPC_JSON_PARSE_ERROR;
769
+ state_ = State::GRPC_JSON_STATE_VALUE_FALSE_E;
617
770
  break;
618
771
 
619
- case GRPC_JSON_STATE_VALUE_FALSE_E:
620
- if (c != 'e') return GRPC_JSON_PARSE_ERROR;
621
- json_reader_set_false(reader);
622
- reader->state = GRPC_JSON_STATE_VALUE_END;
772
+ case State::GRPC_JSON_STATE_VALUE_FALSE_E:
773
+ if (c != 'e') return Status::GRPC_JSON_PARSE_ERROR;
774
+ SetFalse();
775
+ state_ = State::GRPC_JSON_STATE_VALUE_END;
623
776
  break;
624
777
 
625
- case GRPC_JSON_STATE_VALUE_NULL_U:
626
- if (c != 'u') return GRPC_JSON_PARSE_ERROR;
627
- reader->state = GRPC_JSON_STATE_VALUE_NULL_L1;
778
+ case State::GRPC_JSON_STATE_VALUE_NULL_U:
779
+ if (c != 'u') return Status::GRPC_JSON_PARSE_ERROR;
780
+ state_ = State::GRPC_JSON_STATE_VALUE_NULL_L1;
628
781
  break;
629
782
 
630
- case GRPC_JSON_STATE_VALUE_NULL_L1:
631
- if (c != 'l') return GRPC_JSON_PARSE_ERROR;
632
- reader->state = GRPC_JSON_STATE_VALUE_NULL_L2;
783
+ case State::GRPC_JSON_STATE_VALUE_NULL_L1:
784
+ if (c != 'l') return Status::GRPC_JSON_PARSE_ERROR;
785
+ state_ = State::GRPC_JSON_STATE_VALUE_NULL_L2;
633
786
  break;
634
787
 
635
- case GRPC_JSON_STATE_VALUE_NULL_L2:
636
- if (c != 'l') return GRPC_JSON_PARSE_ERROR;
637
- json_reader_set_null(reader);
638
- reader->state = GRPC_JSON_STATE_VALUE_END;
788
+ case State::GRPC_JSON_STATE_VALUE_NULL_L2:
789
+ if (c != 'l') return Status::GRPC_JSON_PARSE_ERROR;
790
+ SetNull();
791
+ state_ = State::GRPC_JSON_STATE_VALUE_END;
639
792
  break;
640
793
 
641
794
  /* All of the VALUE_END cases are handled in the specialized case
642
795
  * above. */
643
- case GRPC_JSON_STATE_VALUE_END:
796
+ case State::GRPC_JSON_STATE_VALUE_END:
644
797
  switch (c) {
645
798
  case ',':
646
799
  case '}':
647
800
  case ']':
648
- GPR_UNREACHABLE_CODE(return GRPC_JSON_INTERNAL_ERROR);
801
+ GPR_UNREACHABLE_CODE(return Status::GRPC_JSON_INTERNAL_ERROR);
649
802
  break;
650
803
 
651
804
  default:
652
- return GRPC_JSON_PARSE_ERROR;
805
+ return Status::GRPC_JSON_PARSE_ERROR;
653
806
  }
654
807
  break;
655
808
 
656
- case GRPC_JSON_STATE_END:
657
- return GRPC_JSON_PARSE_ERROR;
809
+ case State::GRPC_JSON_STATE_END:
810
+ return Status::GRPC_JSON_PARSE_ERROR;
658
811
  }
659
812
  }
660
813
  }
661
814
 
662
- GPR_UNREACHABLE_CODE(return GRPC_JSON_INTERNAL_ERROR);
815
+ GPR_UNREACHABLE_CODE(return Status::GRPC_JSON_INTERNAL_ERROR);
663
816
  }
817
+
818
+ grpc_error* JsonReader::Parse(StringView input, Json* output) {
819
+ JsonReader reader(input);
820
+ Status status = reader.Run();
821
+ if (reader.truncated_errors_) {
822
+ reader.errors_.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
823
+ "too many errors encountered during JSON parsing -- fix reported "
824
+ "errors and try again to see additional errors"));
825
+ }
826
+ if (status == Status::GRPC_JSON_INTERNAL_ERROR) {
827
+ char* msg;
828
+ gpr_asprintf(&msg, "internal error in JSON parser at index %" PRIuPTR,
829
+ reader.CurrentIndex());
830
+ reader.errors_.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg));
831
+ gpr_free(msg);
832
+ } else if (status == Status::GRPC_JSON_PARSE_ERROR) {
833
+ char* msg;
834
+ gpr_asprintf(&msg, "JSON parse error at index %" PRIuPTR,
835
+ reader.CurrentIndex());
836
+ reader.errors_.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg));
837
+ gpr_free(msg);
838
+ }
839
+ if (!reader.errors_.empty()) {
840
+ return GRPC_ERROR_CREATE_FROM_VECTOR("JSON parsing failed",
841
+ &reader.errors_);
842
+ }
843
+ *output = std::move(reader.root_value_);
844
+ return GRPC_ERROR_NONE;
845
+ }
846
+
847
+ } // namespace
848
+
849
+ Json Json::Parse(StringView json_str, grpc_error** error) {
850
+ Json value;
851
+ *error = JsonReader::Parse(json_str, &value);
852
+ return value;
853
+ }
854
+
855
+ } // namespace grpc_core