grpc 1.27.0 → 1.28.0.pre2

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

Potentially problematic release.


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

Files changed (678) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +707 -629
  3. data/include/grpc/impl/codegen/grpc_types.h +5 -0
  4. data/include/grpc/impl/codegen/port_platform.h +7 -0
  5. data/include/grpc/impl/codegen/sync.h +5 -3
  6. data/include/grpc/impl/codegen/sync_abseil.h +36 -0
  7. data/include/grpc/module.modulemap +3 -0
  8. data/include/grpc/support/sync_abseil.h +26 -0
  9. data/src/core/ext/filters/client_channel/client_channel.cc +47 -29
  10. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +31 -47
  11. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -3
  12. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  13. data/src/core/ext/filters/client_channel/http_proxy.cc +4 -1
  14. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +21 -28
  15. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +18 -21
  16. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +9 -13
  17. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +46 -72
  18. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +413 -422
  19. data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -3
  20. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +43 -75
  21. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  22. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +57 -70
  23. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +1 -1
  24. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -1
  25. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
  26. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +3 -3
  27. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -2
  28. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
  29. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +3 -3
  30. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
  31. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +228 -286
  32. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +2 -2
  33. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +13 -14
  34. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +5 -7
  35. data/src/core/ext/filters/client_channel/service_config.cc +91 -160
  36. data/src/core/ext/filters/client_channel/service_config.h +14 -21
  37. data/src/core/ext/filters/client_channel/xds/xds_api.cc +581 -251
  38. data/src/core/ext/filters/client_channel/xds/xds_api.h +189 -151
  39. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +133 -350
  40. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +18 -39
  41. data/src/core/ext/filters/client_channel/xds/xds_channel.h +3 -1
  42. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +12 -9
  43. data/src/core/ext/filters/client_channel/xds/xds_client.cc +559 -242
  44. data/src/core/ext/filters/client_channel/xds/xds_client.h +54 -34
  45. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +53 -128
  46. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +105 -132
  47. data/src/core/ext/filters/message_size/message_size_filter.cc +32 -35
  48. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  49. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +3 -6
  50. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +4 -6
  51. data/src/core/ext/transport/chttp2/transport/writing.cc +1 -1
  52. data/src/core/ext/transport/inproc/inproc_transport.cc +22 -42
  53. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +17 -0
  54. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +30 -0
  55. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +27 -0
  56. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +54 -0
  57. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +46 -21
  58. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +116 -29
  59. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +4 -362
  60. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +14 -1337
  61. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +390 -0
  62. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +1411 -0
  63. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +29 -8
  64. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +60 -0
  65. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +1 -0
  66. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +1 -0
  67. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +5 -3
  68. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +6 -2
  69. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +48 -5
  70. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +154 -4
  71. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +19 -15
  72. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +46 -32
  73. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +26 -4
  74. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +70 -0
  75. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +42 -25
  76. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +83 -25
  77. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +1 -0
  78. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +43 -7
  79. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +115 -0
  80. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -0
  81. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +7 -68
  82. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +14 -201
  83. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +91 -0
  84. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +240 -0
  85. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +1 -71
  86. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +3 -228
  87. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +88 -0
  88. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +258 -0
  89. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +1 -0
  90. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +30 -0
  91. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +53 -0
  92. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +104 -0
  93. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +383 -0
  94. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +17 -0
  95. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +33 -0
  96. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +144 -0
  97. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +527 -0
  98. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +42 -0
  99. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +112 -0
  100. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +29 -0
  101. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +53 -0
  102. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +62 -0
  103. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +199 -0
  104. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +17 -0
  105. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +33 -0
  106. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +793 -0
  107. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +2936 -0
  108. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +58 -0
  109. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +134 -0
  110. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +27 -0
  111. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +53 -0
  112. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +227 -0
  113. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +725 -0
  114. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +296 -0
  115. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +1072 -0
  116. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +32 -0
  117. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +65 -0
  118. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +47 -0
  119. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +108 -0
  120. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +52 -0
  121. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +133 -0
  122. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +87 -0
  123. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +258 -0
  124. data/src/core/ext/upb-generated/envoy/type/range.upb.c +11 -0
  125. data/src/core/ext/upb-generated/envoy/type/range.upb.h +27 -0
  126. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +28 -0
  127. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +62 -0
  128. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +88 -0
  129. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +249 -0
  130. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +30 -27
  131. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +64 -52
  132. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +48 -0
  133. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +104 -0
  134. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +17 -0
  135. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +30 -0
  136. data/src/core/ext/upb-generated/validate/validate.upb.c +38 -34
  137. data/src/core/ext/upb-generated/validate/validate.upb.h +129 -99
  138. data/src/core/lib/channel/channel_trace.cc +32 -41
  139. data/src/core/lib/channel/channel_trace.h +3 -3
  140. data/src/core/lib/channel/channelz.cc +158 -248
  141. data/src/core/lib/channel/channelz.h +12 -15
  142. data/src/core/lib/channel/channelz_registry.cc +47 -74
  143. data/src/core/lib/channel/channelz_registry.h +4 -4
  144. data/src/core/lib/gpr/sync_abseil.cc +114 -0
  145. data/src/core/lib/gpr/sync_posix.cc +8 -5
  146. data/src/core/lib/gpr/sync_windows.cc +4 -2
  147. data/src/core/lib/gprpp/host_port.cc +1 -1
  148. data/src/core/lib/gprpp/inlined_vector.h +1 -210
  149. data/src/core/lib/gprpp/memory.h +2 -6
  150. data/src/core/lib/gprpp/optional.h +0 -41
  151. data/src/core/lib/gprpp/string_view.h +5 -114
  152. data/src/core/lib/iomgr/buffer_list.cc +36 -35
  153. data/src/core/lib/iomgr/error.h +4 -4
  154. data/src/core/lib/iomgr/ev_epollex_linux.cc +12 -4
  155. data/src/core/lib/iomgr/load_file.cc +1 -0
  156. data/src/core/lib/iomgr/tcp_client_posix.cc +17 -17
  157. data/src/core/lib/iomgr/tcp_client_posix.h +6 -6
  158. data/src/core/lib/iomgr/tcp_posix.cc +2 -1
  159. data/src/core/lib/iomgr/work_serializer.cc +155 -0
  160. data/src/core/lib/iomgr/work_serializer.h +65 -0
  161. data/src/core/lib/json/json.h +209 -79
  162. data/src/core/lib/json/json_reader.cc +469 -455
  163. data/src/core/lib/json/json_writer.cc +173 -169
  164. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  165. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +10 -8
  166. data/src/core/lib/security/credentials/jwt/json_token.cc +26 -56
  167. data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
  168. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -18
  169. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +149 -159
  170. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
  171. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +37 -34
  172. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
  173. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +2 -1
  174. data/src/core/lib/security/security_connector/local/local_security_connector.cc +5 -7
  175. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +3 -15
  176. data/src/core/lib/security/security_connector/ssl_utils.cc +3 -1
  177. data/src/core/lib/security/security_connector/ssl_utils.h +0 -1
  178. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +24 -1
  179. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -1
  180. data/src/core/lib/security/transport/security_handshaker.cc +2 -2
  181. data/src/core/lib/security/util/json_util.cc +22 -15
  182. data/src/core/lib/security/util/json_util.h +2 -2
  183. data/src/core/lib/surface/version.cc +1 -1
  184. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  185. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  186. data/src/core/tsi/grpc_shadow_boringssl.h +1333 -1319
  187. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  188. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -1
  189. data/src/core/tsi/ssl_transport_security.cc +2 -1
  190. data/src/ruby/lib/grpc/version.rb +1 -1
  191. data/third_party/abseil-cpp/absl/base/attributes.h +1 -1
  192. data/third_party/abseil-cpp/absl/base/config.h +10 -4
  193. data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +30 -9
  194. data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
  195. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +7 -5
  196. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +2 -1
  197. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +2 -2
  198. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -3
  199. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +3 -3
  200. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +37 -0
  201. data/third_party/abseil-cpp/absl/base/options.h +2 -10
  202. data/third_party/abseil-cpp/absl/strings/charconv.cc +0 -1
  203. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +388 -0
  204. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +432 -0
  205. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +245 -0
  206. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +209 -0
  207. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +326 -0
  208. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +51 -0
  209. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +415 -0
  210. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +493 -0
  211. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +23 -0
  212. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
  213. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +104 -0
  214. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +334 -0
  215. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +333 -0
  216. data/third_party/abseil-cpp/absl/strings/str_format.h +537 -0
  217. data/third_party/abseil-cpp/absl/strings/string_view.h +19 -11
  218. data/{src/boringssl → third_party/boringssl-with-bazel}/err_data.c +0 -0
  219. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bitstr.c +0 -0
  220. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bool.c +0 -0
  221. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_d2i_fp.c +0 -0
  222. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_dup.c +0 -0
  223. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_enum.c +0 -0
  224. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_gentm.c +0 -0
  225. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_i2d_fp.c +0 -0
  226. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_int.c +0 -0
  227. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_mbstr.c +0 -0
  228. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_object.c +0 -0
  229. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_octet.c +0 -0
  230. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_print.c +0 -0
  231. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_strnid.c +0 -0
  232. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_time.c +3 -4
  233. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_type.c +0 -0
  234. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utctm.c +0 -0
  235. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utf8.c +0 -0
  236. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_lib.c +0 -0
  237. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_locl.h +0 -0
  238. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_par.c +0 -0
  239. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn_pack.c +0 -0
  240. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_enum.c +0 -0
  241. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_int.c +0 -0
  242. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_string.c +0 -0
  243. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_dec.c +0 -0
  244. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_enc.c +0 -0
  245. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_fre.c +0 -0
  246. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_new.c +0 -0
  247. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_typ.c +0 -0
  248. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_utl.c +0 -0
  249. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/time_support.c +0 -0
  250. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/base64/base64.c +0 -0
  251. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio.c +0 -0
  252. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio_mem.c +0 -0
  253. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/connect.c +3 -4
  254. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/fd.c +0 -1
  255. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/file.c +5 -6
  256. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/hexdump.c +0 -0
  257. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/internal.h +0 -0
  258. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/pair.c +0 -1
  259. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/printf.c +0 -0
  260. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket.c +0 -0
  261. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket_helper.c +0 -0
  262. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/bn_asn1.c +0 -0
  263. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/convert.c +0 -0
  264. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/buf/buf.c +10 -69
  265. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/asn1_compat.c +0 -0
  266. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/ber.c +0 -0
  267. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbb.c +41 -2
  268. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbs.c +60 -3
  269. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/internal.h +0 -0
  270. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/unicode.c +0 -0
  271. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/chacha.c +0 -0
  272. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/internal.h +0 -0
  273. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/cipher_extra.c +0 -0
  274. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/derive_key.c +0 -0
  275. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesccm.c +0 -0
  276. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesctrhmac.c +0 -0
  277. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesgcmsiv.c +8 -0
  278. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_chacha20poly1305.c +0 -0
  279. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_null.c +0 -0
  280. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc2.c +0 -0
  281. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc4.c +0 -0
  282. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_tls.c +0 -0
  283. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/internal.h +0 -0
  284. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/tls_cbc.c +0 -0
  285. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cmac/cmac.c +0 -0
  286. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf.c +0 -0
  287. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf_def.h +0 -0
  288. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/internal.h +0 -0
  289. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-fuchsia.c +0 -0
  290. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-linux.c +0 -0
  291. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.c +0 -1
  292. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.h +0 -0
  293. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm.c +0 -0
  294. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-intel.c +0 -0
  295. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-ppc64le.c +0 -0
  296. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/crypto.c +0 -0
  297. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/curve25519/spake25519.c +0 -0
  298. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/check.c +3 -3
  299. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh.c +1 -2
  300. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh_asn1.c +0 -0
  301. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/params.c +0 -0
  302. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/digest_extra/digest_extra.c +0 -0
  303. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa.c +0 -0
  304. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa_asn1.c +0 -0
  305. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_asn1.c +0 -0
  306. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_derive.c +2 -3
  307. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdh_extra/ecdh_extra.c +0 -0
  308. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdsa_extra/ecdsa_asn1.c +0 -0
  309. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/engine/engine.c +0 -0
  310. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/err.c +6 -6
  311. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/internal.h +0 -0
  312. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/digestsign.c +0 -0
  313. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp.c +0 -0
  314. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_asn1.c +0 -0
  315. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_ctx.c +0 -0
  316. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/internal.h +0 -0
  317. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_dsa_asn1.c +0 -0
  318. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec.c +0 -1
  319. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec_asn1.c +0 -0
  320. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519.c +0 -0
  321. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519_asn1.c +0 -0
  322. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa.c +14 -2
  323. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa_asn1.c +0 -0
  324. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519.c +0 -0
  325. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519_asn1.c +1 -2
  326. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/pbkdf.c +0 -0
  327. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/print.c +0 -0
  328. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/scrypt.c +0 -0
  329. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/sign.c +0 -0
  330. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ex_data.c +0 -0
  331. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +108 -0
  332. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1282 -0
  333. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/internal.h +5 -7
  334. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/key_wrap.c +0 -0
  335. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/mode_wrappers.c +0 -2
  336. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bcm.c +2 -0
  337. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/add.c +0 -0
  338. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -0
  339. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bn.c +0 -0
  340. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bytes.c +0 -0
  341. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/cmp.c +0 -0
  342. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/ctx.c +0 -0
  343. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div.c +0 -0
  344. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div_extra.c +0 -0
  345. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/exponentiation.c +0 -0
  346. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd.c +0 -0
  347. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd_extra.c +0 -0
  348. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/generic.c +0 -0
  349. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/internal.h +0 -0
  350. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/jacobi.c +0 -0
  351. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery.c +0 -0
  352. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery_inv.c +0 -0
  353. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/mul.c +0 -0
  354. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/prime.c +11 -12
  355. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/random.c +0 -0
  356. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.c +0 -0
  357. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.h +0 -0
  358. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/shift.c +0 -0
  359. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/sqrt.c +0 -0
  360. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/aead.c +0 -0
  361. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/cipher.c +0 -0
  362. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_aes.c +3 -5
  363. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_des.c +0 -0
  364. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/internal.h +0 -0
  365. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/delocate.h +0 -0
  366. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/des.c +0 -0
  367. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/internal.h +0 -0
  368. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digest.c +0 -0
  369. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digests.c +0 -0
  370. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/internal.h +0 -0
  371. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/md32_common.h +0 -0
  372. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec.c +0 -0
  373. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_key.c +1 -1
  374. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_montgomery.c +0 -0
  375. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/felem.c +0 -0
  376. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/internal.h +0 -0
  377. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/oct.c +0 -0
  378. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p224-64.c +0 -0
  379. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64-table.h +0 -0
  380. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.c +0 -0
  381. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.h +0 -0
  382. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/scalar.c +0 -0
  383. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/simple.c +0 -0
  384. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/simple_mul.c +0 -0
  385. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/util.c +0 -0
  386. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/wnaf.c +0 -0
  387. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdh/ecdh.c +0 -0
  388. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdsa/ecdsa.c +0 -0
  389. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/fips_shared_support.c +0 -0
  390. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/hmac/hmac.c +0 -0
  391. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/is_fips.c +0 -0
  392. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md4/md4.c +0 -0
  393. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/internal.h +0 -0
  394. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/md5.c +0 -0
  395. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cbc.c +0 -0
  396. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cfb.c +0 -0
  397. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ctr.c +0 -0
  398. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/gcm.c +45 -193
  399. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +304 -0
  400. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/internal.h +8 -18
  401. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ofb.c +0 -0
  402. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/polyval.c +0 -0
  403. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/ctrdrbg.c +0 -0
  404. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/internal.h +0 -0
  405. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/rand.c +0 -0
  406. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/urandom.c +0 -0
  407. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/blinding.c +0 -0
  408. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/internal.h +0 -0
  409. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/padding.c +0 -0
  410. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa.c +7 -1
  411. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa_impl.c +60 -51
  412. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/self_check/self_check.c +0 -0
  413. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/internal.h +0 -0
  414. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1-altivec.c +0 -0
  415. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1.c +0 -0
  416. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha256.c +0 -0
  417. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha512.c +0 -0
  418. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/internal.h +0 -0
  419. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/kdf.c +0 -0
  420. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hkdf/hkdf.c +0 -0
  421. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/hrss.c +210 -311
  422. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/internal.h +0 -1
  423. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/internal.h +21 -1
  424. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/lhash/lhash.c +0 -0
  425. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/mem.c +70 -0
  426. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj.c +16 -21
  427. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_dat.h +27 -6
  428. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_xref.c +0 -0
  429. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_all.c +0 -0
  430. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_info.c +0 -1
  431. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_lib.c +7 -7
  432. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_oth.c +0 -1
  433. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pk8.c +0 -1
  434. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pkey.c +0 -1
  435. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_x509.c +0 -0
  436. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_xaux.c +0 -0
  437. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/internal.h +0 -0
  438. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7.c +0 -0
  439. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7_x509.c +1 -1
  440. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/internal.h +0 -0
  441. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/p5_pbev2.c +0 -0
  442. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8.c +0 -0
  443. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8_x509.c +0 -0
  444. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/internal.h +0 -0
  445. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305.c +2 -2
  446. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_arm.c +21 -20
  447. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_vec.c +34 -17
  448. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/internal.h +0 -0
  449. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/pool.c +1 -2
  450. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/deterministic.c +0 -0
  451. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/forkunsafe.c +0 -0
  452. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/fuchsia.c +0 -0
  453. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/rand_extra.c +0 -0
  454. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/windows.c +0 -0
  455. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rc4/rc4.c +0 -0
  456. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_c11.c +0 -0
  457. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_lock.c +0 -0
  458. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_asn1.c +0 -0
  459. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_print.c +0 -0
  460. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/siphash/siphash.c +3 -1
  461. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/stack/stack.c +0 -0
  462. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread.c +0 -0
  463. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_none.c +0 -0
  464. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_pthread.c +0 -0
  465. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_win.c +0 -0
  466. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_digest.c +0 -0
  467. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_sign.c +0 -0
  468. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_strex.c +0 -0
  469. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_verify.c +0 -1
  470. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/algorithm.c +0 -0
  471. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/asn1_gen.c +0 -0
  472. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_dir.c +1 -1
  473. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_file.c +0 -1
  474. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/charmap.h +0 -0
  475. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/i2d_pr.c +0 -0
  476. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/internal.h +0 -0
  477. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/rsa_pss.c +0 -0
  478. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_crl.c +0 -0
  479. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_req.c +0 -0
  480. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509.c +0 -0
  481. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509a.c +0 -0
  482. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/vpm_int.h +0 -0
  483. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509.c +0 -0
  484. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_att.c +0 -0
  485. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_cmp.c +0 -1
  486. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_d2.c +0 -0
  487. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_def.c +0 -0
  488. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_ext.c +0 -0
  489. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_lu.c +0 -0
  490. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_obj.c +1 -1
  491. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_r2x.c +0 -1
  492. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_req.c +0 -1
  493. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_set.c +0 -0
  494. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_trs.c +1 -2
  495. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_txt.c +0 -0
  496. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_v3.c +0 -0
  497. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vfy.c +0 -1
  498. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vpm.c +3 -4
  499. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509cset.c +0 -0
  500. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509name.c +0 -0
  501. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509rset.c +0 -0
  502. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509spki.c +0 -0
  503. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_algor.c +0 -0
  504. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_all.c +0 -1
  505. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_attrib.c +0 -0
  506. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_crl.c +0 -0
  507. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_exten.c +0 -0
  508. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_info.c +0 -0
  509. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_name.c +0 -0
  510. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pkey.c +0 -0
  511. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pubkey.c +0 -0
  512. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_req.c +0 -0
  513. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_sig.c +0 -0
  514. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_spki.c +0 -0
  515. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_val.c +0 -0
  516. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509.c +0 -0
  517. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509a.c +0 -0
  518. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/ext_dat.h +0 -0
  519. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/internal.h +0 -0
  520. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_cache.c +0 -0
  521. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_data.c +0 -0
  522. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_int.h +0 -0
  523. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_lib.c +0 -0
  524. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_map.c +0 -0
  525. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_node.c +0 -0
  526. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_tree.c +0 -0
  527. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akey.c +0 -0
  528. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akeya.c +0 -0
  529. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_alt.c +3 -3
  530. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bcons.c +0 -0
  531. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bitst.c +0 -0
  532. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_conf.c +0 -0
  533. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_cpols.c +0 -0
  534. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_crld.c +0 -0
  535. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_enum.c +2 -2
  536. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_extku.c +0 -0
  537. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_genn.c +0 -0
  538. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ia5.c +0 -0
  539. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_info.c +4 -5
  540. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_int.c +0 -0
  541. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_lib.c +0 -0
  542. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ncons.c +0 -0
  543. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ocsp.c +0 -0
  544. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pci.c +0 -0
  545. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcia.c +0 -0
  546. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcons.c +0 -0
  547. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pku.c +0 -0
  548. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pmaps.c +0 -0
  549. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_prn.c +0 -0
  550. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_purp.c +2 -3
  551. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_skey.c +0 -0
  552. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_sxnet.c +0 -0
  553. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_utl.c +11 -12
  554. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aead.h +0 -0
  555. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aes.h +0 -0
  556. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/arm_arch.h +0 -0
  557. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1.h +0 -0
  558. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1_mac.h +0 -0
  559. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1t.h +0 -0
  560. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base.h +0 -0
  561. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base64.h +0 -0
  562. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bio.h +0 -0
  563. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/blowfish.h +0 -0
  564. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bn.h +32 -20
  565. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buf.h +9 -9
  566. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buffer.h +0 -0
  567. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bytestring.h +34 -0
  568. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cast.h +0 -0
  569. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/chacha.h +0 -0
  570. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cipher.h +0 -0
  571. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cmac.h +0 -0
  572. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/conf.h +0 -0
  573. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cpu.h +0 -0
  574. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/crypto.h +0 -0
  575. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/curve25519.h +0 -0
  576. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/des.h +0 -0
  577. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dh.h +0 -0
  578. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/digest.h +0 -0
  579. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dsa.h +0 -0
  580. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dtls1.h +0 -0
  581. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/e_os2.h +0 -0
  582. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec.h +11 -4
  583. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec_key.h +4 -2
  584. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdh.h +0 -0
  585. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdsa.h +0 -0
  586. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/engine.h +0 -0
  587. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/err.h +11 -9
  588. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/evp.h +20 -0
  589. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ex_data.h +0 -0
  590. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hkdf.h +0 -0
  591. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hmac.h +0 -0
  592. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hrss.h +0 -0
  593. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/is_boringssl.h +0 -0
  594. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/lhash.h +0 -0
  595. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md4.h +0 -0
  596. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md5.h +0 -0
  597. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/mem.h +17 -2
  598. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/nid.h +9 -0
  599. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj.h +0 -0
  600. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj_mac.h +0 -0
  601. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/objects.h +0 -0
  602. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslconf.h +0 -0
  603. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslv.h +0 -0
  604. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ossl_typ.h +0 -0
  605. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pem.h +0 -0
  606. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs12.h +0 -0
  607. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs7.h +0 -0
  608. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs8.h +0 -0
  609. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/poly1305.h +5 -7
  610. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pool.h +0 -0
  611. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rand.h +0 -0
  612. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rc4.h +0 -0
  613. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ripemd.h +0 -0
  614. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rsa.h +0 -0
  615. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/safestack.h +0 -0
  616. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/sha.h +0 -0
  617. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/siphash.h +0 -0
  618. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/span.h +0 -0
  619. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/srtp.h +0 -0
  620. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl.h +10 -20
  621. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl3.h +0 -0
  622. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/stack.h +0 -0
  623. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/thread.h +0 -0
  624. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/tls1.h +0 -3
  625. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/type_check.h +0 -0
  626. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509.h +0 -0
  627. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509_vfy.h +0 -0
  628. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509v3.h +0 -0
  629. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/bio_ssl.cc +0 -0
  630. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_both.cc +0 -1
  631. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_lib.cc +0 -0
  632. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_pkt.cc +0 -1
  633. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_srtp.cc +0 -0
  634. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_method.cc +0 -1
  635. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_record.cc +0 -0
  636. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handoff.cc +126 -29
  637. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake.cc +5 -4
  638. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_client.cc +24 -13
  639. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_server.cc +1 -5
  640. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/internal.h +32 -26
  641. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_both.cc +0 -0
  642. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_lib.cc +2 -3
  643. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_pkt.cc +0 -1
  644. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_aead_ctx.cc +0 -0
  645. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_asn1.cc +1 -2
  646. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_buffer.cc +34 -15
  647. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cert.cc +0 -1
  648. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cipher.cc +0 -1
  649. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_file.cc +0 -0
  650. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_key_share.cc +0 -0
  651. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_lib.cc +13 -14
  652. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_privkey.cc +0 -0
  653. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_session.cc +2 -1
  654. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_stat.cc +0 -0
  655. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_transcript.cc +0 -0
  656. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_versions.cc +1 -1
  657. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_x509.cc +0 -0
  658. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_enc.cc +0 -0
  659. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_lib.cc +11 -171
  660. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_both.cc +0 -0
  661. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_client.cc +3 -4
  662. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_enc.cc +5 -1
  663. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_server.cc +78 -101
  664. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_method.cc +1 -1
  665. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_record.cc +7 -2
  666. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519.c +0 -0
  667. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_32.h +0 -0
  668. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_64.h +0 -0
  669. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_tables.h +0 -0
  670. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/internal.h +0 -0
  671. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256.c +0 -0
  672. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256_32.h +0 -0
  673. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256_64.h +0 -0
  674. metadata +562 -491
  675. data/src/core/lib/iomgr/logical_thread.cc +0 -103
  676. data/src/core/lib/iomgr/logical_thread.h +0 -52
  677. data/src/core/lib/json/json.cc +0 -94
  678. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +0 -860
@@ -39,6 +39,8 @@ extern "C" {
39
39
  #include <openssl/pem.h>
40
40
  }
41
41
 
42
+ using grpc_core::Json;
43
+
42
44
  /* --- Constants. --- */
43
45
 
44
46
  /* 1 hour max. */
@@ -65,7 +67,7 @@ int grpc_auth_json_key_is_valid(const grpc_auth_json_key* json_key) {
65
67
  strcmp(json_key->type, GRPC_AUTH_JSON_TYPE_INVALID);
66
68
  }
67
69
 
68
- grpc_auth_json_key grpc_auth_json_key_create_from_json(const grpc_json* json) {
70
+ grpc_auth_json_key grpc_auth_json_key_create_from_json(const Json& json) {
69
71
  grpc_auth_json_key result;
70
72
  BIO* bio = nullptr;
71
73
  const char* prop_value;
@@ -74,7 +76,7 @@ grpc_auth_json_key grpc_auth_json_key_create_from_json(const grpc_json* json) {
74
76
 
75
77
  memset(&result, 0, sizeof(grpc_auth_json_key));
76
78
  result.type = GRPC_AUTH_JSON_TYPE_INVALID;
77
- if (json == nullptr) {
79
+ if (json.type() == Json::Type::JSON_NULL) {
78
80
  gpr_log(GPR_ERROR, "Invalid json.");
79
81
  goto end;
80
82
  }
@@ -122,12 +124,10 @@ end:
122
124
 
123
125
  grpc_auth_json_key grpc_auth_json_key_create_from_string(
124
126
  const char* json_string) {
125
- char* scratchpad = gpr_strdup(json_string);
126
- grpc_json* json = grpc_json_parse_string(scratchpad);
127
- grpc_auth_json_key result = grpc_auth_json_key_create_from_json(json);
128
- grpc_json_destroy(json);
129
- gpr_free(scratchpad);
130
- return result;
127
+ grpc_error* error = GRPC_ERROR_NONE;
128
+ Json json = Json::Parse(json_string, &error);
129
+ GRPC_LOG_IF_ERROR("JSON key parsing", error);
130
+ return grpc_auth_json_key_create_from_json(std::move(json));
131
131
  }
132
132
 
133
133
  void grpc_auth_json_key_destruct(grpc_auth_json_key* json_key) {
@@ -153,72 +153,42 @@ void grpc_auth_json_key_destruct(grpc_auth_json_key* json_key) {
153
153
 
154
154
  /* --- jwt encoding and signature. --- */
155
155
 
156
- static grpc_json* create_child(grpc_json* brother, grpc_json* parent,
157
- const char* key, const char* value,
158
- grpc_json_type type) {
159
- grpc_json* child = grpc_json_create(type);
160
- if (brother) brother->next = child;
161
- if (!parent->child) parent->child = child;
162
- child->parent = parent;
163
- child->value = value;
164
- child->key = key;
165
- return child;
166
- }
167
-
168
156
  static char* encoded_jwt_header(const char* key_id, const char* algorithm) {
169
- grpc_json* json = grpc_json_create(GRPC_JSON_OBJECT);
170
- grpc_json* child = nullptr;
171
- char* json_str = nullptr;
172
- char* result = nullptr;
173
-
174
- child = create_child(nullptr, json, "alg", algorithm, GRPC_JSON_STRING);
175
- child = create_child(child, json, "typ", GRPC_JWT_TYPE, GRPC_JSON_STRING);
176
- create_child(child, json, "kid", key_id, GRPC_JSON_STRING);
177
-
178
- json_str = grpc_json_dump_to_string(json, 0);
179
- result = grpc_base64_encode(json_str, strlen(json_str), 1, 0);
180
- gpr_free(json_str);
181
- grpc_json_destroy(json);
182
- return result;
157
+ Json json = Json::Object{
158
+ {"alg", algorithm},
159
+ {"typ", GRPC_JWT_TYPE},
160
+ {"kid", key_id},
161
+ };
162
+ std::string json_str = json.Dump();
163
+ return grpc_base64_encode(json_str.c_str(), json_str.size(), 1, 0);
183
164
  }
184
165
 
185
166
  static char* encoded_jwt_claim(const grpc_auth_json_key* json_key,
186
167
  const char* audience,
187
168
  gpr_timespec token_lifetime, const char* scope) {
188
- grpc_json* json = grpc_json_create(GRPC_JSON_OBJECT);
189
- grpc_json* child = nullptr;
190
- char* json_str = nullptr;
191
- char* result = nullptr;
192
169
  gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME);
193
170
  gpr_timespec expiration = gpr_time_add(now, token_lifetime);
194
- char now_str[GPR_LTOA_MIN_BUFSIZE];
195
- char expiration_str[GPR_LTOA_MIN_BUFSIZE];
196
171
  if (gpr_time_cmp(token_lifetime, grpc_max_auth_token_lifetime()) > 0) {
197
172
  gpr_log(GPR_INFO, "Cropping token lifetime to maximum allowed value.");
198
173
  expiration = gpr_time_add(now, grpc_max_auth_token_lifetime());
199
174
  }
200
- int64_ttoa(now.tv_sec, now_str);
201
- int64_ttoa(expiration.tv_sec, expiration_str);
202
175
 
203
- child = create_child(nullptr, json, "iss", json_key->client_email,
204
- GRPC_JSON_STRING);
176
+ Json::Object object = {
177
+ {"iss", json_key->client_email},
178
+ {"aud", audience},
179
+ {"iat", now.tv_sec},
180
+ {"exp", expiration.tv_sec},
181
+ };
205
182
  if (scope != nullptr) {
206
- child = create_child(child, json, "scope", scope, GRPC_JSON_STRING);
183
+ object["scope"] = scope;
207
184
  } else {
208
185
  /* Unscoped JWTs need a sub field. */
209
- child = create_child(child, json, "sub", json_key->client_email,
210
- GRPC_JSON_STRING);
186
+ object["sub"] = json_key->client_email;
211
187
  }
212
188
 
213
- child = create_child(child, json, "aud", audience, GRPC_JSON_STRING);
214
- child = create_child(child, json, "iat", now_str, GRPC_JSON_NUMBER);
215
- create_child(child, json, "exp", expiration_str, GRPC_JSON_NUMBER);
216
-
217
- json_str = grpc_json_dump_to_string(json, 0);
218
- result = grpc_base64_encode(json_str, strlen(json_str), 1, 0);
219
- gpr_free(json_str);
220
- grpc_json_destroy(json);
221
- return result;
189
+ Json json(object);
190
+ std::string json_str = json.Dump();
191
+ return grpc_base64_encode(json_str.c_str(), json_str.size(), 1, 0);
222
192
  }
223
193
 
224
194
  static char* dot_concat_and_free_strings(char* str1, char* str2) {
@@ -52,7 +52,8 @@ grpc_auth_json_key grpc_auth_json_key_create_from_string(
52
52
 
53
53
  /* Creates a json_key object from parsed json. Returns an invalid object if a
54
54
  parsing error has been encountered. */
55
- grpc_auth_json_key grpc_auth_json_key_create_from_json(const grpc_json* json);
55
+ grpc_auth_json_key grpc_auth_json_key_create_from_json(
56
+ const grpc_core::Json& json);
56
57
 
57
58
  /* Destructs the object. */
58
59
  void grpc_auth_json_key_destruct(grpc_auth_json_key* json_key);
@@ -32,6 +32,8 @@
32
32
  #include <grpc/support/string_util.h>
33
33
  #include <grpc/support/sync.h>
34
34
 
35
+ using grpc_core::Json;
36
+
35
37
  void grpc_service_account_jwt_access_credentials::reset_cache() {
36
38
  GRPC_MDELEM_UNREF(cached_.jwt_md);
37
39
  cached_.jwt_md = GRPC_MDNULL;
@@ -136,26 +138,14 @@ grpc_service_account_jwt_access_credentials_create_from_auth_json_key(
136
138
  }
137
139
 
138
140
  static char* redact_private_key(const char* json_key) {
139
- char* json_copy = gpr_strdup(json_key);
140
- grpc_json* json = grpc_json_parse_string(json_copy);
141
- if (!json) {
142
- gpr_free(json_copy);
141
+ grpc_error* error = GRPC_ERROR_NONE;
142
+ Json json = Json::Parse(json_key, &error);
143
+ if (error != GRPC_ERROR_NONE || json.type() != Json::Type::OBJECT) {
144
+ GRPC_ERROR_UNREF(error);
143
145
  return gpr_strdup("<Json failed to parse.>");
144
146
  }
145
- const char* redacted = "<redacted>";
146
- grpc_json* current = json->child;
147
- while (current) {
148
- if (current->type == GRPC_JSON_STRING &&
149
- strcmp(current->key, "private_key") == 0) {
150
- current->value = const_cast<char*>(redacted);
151
- break;
152
- }
153
- current = current->next;
154
- }
155
- char* clean_json = grpc_json_dump_to_string(json, 2);
156
- gpr_free(json_copy);
157
- grpc_json_destroy(json);
158
- return clean_json;
147
+ (*json.mutable_object())["private_key"] = "<redacted>";
148
+ return gpr_strdup(json.Dump(/*indent=*/2).c_str());
159
149
  }
160
150
 
161
151
  grpc_call_credentials* grpc_service_account_jwt_access_credentials_create(
@@ -37,12 +37,15 @@ extern "C" {
37
37
  }
38
38
 
39
39
  #include "src/core/lib/gpr/string.h"
40
+ #include "src/core/lib/gprpp/manual_constructor.h"
40
41
  #include "src/core/lib/http/httpcli.h"
41
42
  #include "src/core/lib/iomgr/polling_entity.h"
42
43
  #include "src/core/lib/slice/b64.h"
43
44
  #include "src/core/lib/slice/slice_internal.h"
44
45
  #include "src/core/tsi/ssl_types.h"
45
46
 
47
+ using grpc_core::Json;
48
+
46
49
  /* --- Utils. --- */
47
50
 
48
51
  const char* grpc_jwt_verifier_status_to_string(
@@ -79,42 +82,41 @@ static const EVP_MD* evp_md_from_alg(const char* alg) {
79
82
  }
80
83
  }
81
84
 
82
- static grpc_json* parse_json_part_from_jwt(const char* str, size_t len,
83
- grpc_slice* buffer) {
84
- grpc_json* json;
85
-
86
- *buffer = grpc_base64_decode_with_len(str, len, 1);
87
- if (GRPC_SLICE_IS_EMPTY(*buffer)) {
85
+ static Json parse_json_part_from_jwt(const char* str, size_t len) {
86
+ grpc_slice slice = grpc_base64_decode_with_len(str, len, 1);
87
+ if (GRPC_SLICE_IS_EMPTY(slice)) {
88
88
  gpr_log(GPR_ERROR, "Invalid base64.");
89
- return nullptr;
90
- }
91
- json = grpc_json_parse_string_with_len(
92
- reinterpret_cast<char*> GRPC_SLICE_START_PTR(*buffer),
93
- GRPC_SLICE_LENGTH(*buffer));
94
- if (json == nullptr) {
95
- grpc_slice_unref_internal(*buffer);
96
- gpr_log(GPR_ERROR, "JSON parsing error.");
97
- }
89
+ return Json(); // JSON null
90
+ }
91
+ grpc_core::StringView string(
92
+ reinterpret_cast<char*>(GRPC_SLICE_START_PTR(slice)),
93
+ GRPC_SLICE_LENGTH(slice));
94
+ grpc_error* error = GRPC_ERROR_NONE;
95
+ Json json = Json::Parse(string, &error);
96
+ if (error != GRPC_ERROR_NONE) {
97
+ gpr_log(GPR_ERROR, "JSON parse error: %s", grpc_error_string(error));
98
+ GRPC_ERROR_UNREF(error);
99
+ json = Json(); // JSON null
100
+ }
101
+ grpc_slice_unref_internal(slice);
98
102
  return json;
99
103
  }
100
104
 
101
- static const char* validate_string_field(const grpc_json* json,
102
- const char* key) {
103
- if (json->type != GRPC_JSON_STRING) {
104
- gpr_log(GPR_ERROR, "Invalid %s field [%s]", key, json->value);
105
+ static const char* validate_string_field(const Json& json, const char* key) {
106
+ if (json.type() != Json::Type::STRING) {
107
+ gpr_log(GPR_ERROR, "Invalid %s field", key);
105
108
  return nullptr;
106
109
  }
107
- return json->value;
110
+ return json.string_value().c_str();
108
111
  }
109
112
 
110
- static gpr_timespec validate_time_field(const grpc_json* json,
111
- const char* key) {
113
+ static gpr_timespec validate_time_field(const Json& json, const char* key) {
112
114
  gpr_timespec result = gpr_time_0(GPR_CLOCK_REALTIME);
113
- if (json->type != GRPC_JSON_NUMBER) {
114
- gpr_log(GPR_ERROR, "Invalid %s field [%s]", key, json->value);
115
+ if (json.type() != Json::Type::NUMBER) {
116
+ gpr_log(GPR_ERROR, "Invalid %s field", key);
115
117
  return result;
116
118
  }
117
- result.tv_sec = strtol(json->value, nullptr, 10);
119
+ result.tv_sec = strtol(json.string_value().c_str(), nullptr, 10);
118
120
  return result;
119
121
  }
120
122
 
@@ -125,50 +127,55 @@ typedef struct {
125
127
  const char* kid;
126
128
  const char* typ;
127
129
  /* TODO(jboeuf): Add others as needed (jku, jwk, x5u, x5c and so on...). */
128
- grpc_slice buffer;
130
+ grpc_core::ManualConstructor<Json> json;
129
131
  } jose_header;
130
132
 
131
133
  static void jose_header_destroy(jose_header* h) {
132
- grpc_slice_unref_internal(h->buffer);
134
+ h->json.Destroy();
133
135
  gpr_free(h);
134
136
  }
135
137
 
136
- /* Takes ownership of json and buffer. */
137
- static jose_header* jose_header_from_json(grpc_json* json,
138
- const grpc_slice& buffer) {
139
- grpc_json* cur;
138
+ static jose_header* jose_header_from_json(Json json) {
139
+ const char* alg_value;
140
+ Json::Object::const_iterator it;
140
141
  jose_header* h = static_cast<jose_header*>(gpr_zalloc(sizeof(jose_header)));
141
- h->buffer = buffer;
142
- for (cur = json->child; cur != nullptr; cur = cur->next) {
143
- if (strcmp(cur->key, "alg") == 0) {
144
- /* We only support RSA-1.5 signatures for now.
145
- Beware of this if we add HMAC support:
146
- https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/
147
- */
148
- if (cur->type != GRPC_JSON_STRING || strncmp(cur->value, "RS", 2) ||
149
- evp_md_from_alg(cur->value) == nullptr) {
150
- gpr_log(GPR_ERROR, "Invalid alg field [%s]", cur->value);
151
- goto error;
152
- }
153
- h->alg = cur->value;
154
- } else if (strcmp(cur->key, "typ") == 0) {
155
- h->typ = validate_string_field(cur, "typ");
156
- if (h->typ == nullptr) goto error;
157
- } else if (strcmp(cur->key, "kid") == 0) {
158
- h->kid = validate_string_field(cur, "kid");
159
- if (h->kid == nullptr) goto error;
160
- }
142
+ if (json.type() != Json::Type::OBJECT) {
143
+ gpr_log(GPR_ERROR, "JSON value is not an object");
144
+ goto error;
161
145
  }
162
- if (h->alg == nullptr) {
146
+ // Check alg field.
147
+ it = json.object_value().find("alg");
148
+ if (it == json.object_value().end()) {
163
149
  gpr_log(GPR_ERROR, "Missing alg field.");
164
150
  goto error;
165
151
  }
166
- grpc_json_destroy(json);
167
- h->buffer = buffer;
152
+ /* We only support RSA-1.5 signatures for now.
153
+ Beware of this if we add HMAC support:
154
+ https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/
155
+ */
156
+ alg_value = it->second.string_value().c_str();
157
+ if (it->second.type() != Json::Type::STRING || strncmp(alg_value, "RS", 2) ||
158
+ evp_md_from_alg(alg_value) == nullptr) {
159
+ gpr_log(GPR_ERROR, "Invalid alg field");
160
+ goto error;
161
+ }
162
+ h->alg = alg_value;
163
+ // Check typ field.
164
+ it = json.object_value().find("typ");
165
+ if (it != json.object_value().end()) {
166
+ h->typ = validate_string_field(it->second, "typ");
167
+ if (h->typ == nullptr) goto error;
168
+ }
169
+ // Check kid field.
170
+ it = json.object_value().find("kid");
171
+ if (it != json.object_value().end()) {
172
+ h->kid = validate_string_field(it->second, "kid");
173
+ if (h->kid == nullptr) goto error;
174
+ }
175
+ h->json.Init(std::move(json));
168
176
  return h;
169
177
 
170
178
  error:
171
- grpc_json_destroy(json);
172
179
  jose_header_destroy(h);
173
180
  return nullptr;
174
181
  }
@@ -185,19 +192,17 @@ struct grpc_jwt_claims {
185
192
  gpr_timespec exp;
186
193
  gpr_timespec nbf;
187
194
 
188
- grpc_json* json;
189
- grpc_slice buffer;
195
+ grpc_core::ManualConstructor<Json> json;
190
196
  };
191
197
 
192
198
  void grpc_jwt_claims_destroy(grpc_jwt_claims* claims) {
193
- grpc_json_destroy(claims->json);
194
- grpc_slice_unref_internal(claims->buffer);
199
+ claims->json.Destroy();
195
200
  gpr_free(claims);
196
201
  }
197
202
 
198
- const grpc_json* grpc_jwt_claims_json(const grpc_jwt_claims* claims) {
203
+ const Json* grpc_jwt_claims_json(const grpc_jwt_claims* claims) {
199
204
  if (claims == nullptr) return nullptr;
200
- return claims->json;
205
+ return claims->json.get();
201
206
  }
202
207
 
203
208
  const char* grpc_jwt_claims_subject(const grpc_jwt_claims* claims) {
@@ -235,45 +240,43 @@ gpr_timespec grpc_jwt_claims_not_before(const grpc_jwt_claims* claims) {
235
240
  return claims->nbf;
236
241
  }
237
242
 
238
- /* Takes ownership of json and buffer even in case of failure. */
239
- grpc_jwt_claims* grpc_jwt_claims_from_json(grpc_json* json,
240
- const grpc_slice& buffer) {
241
- grpc_json* cur;
243
+ grpc_jwt_claims* grpc_jwt_claims_from_json(Json json) {
242
244
  grpc_jwt_claims* claims =
243
- static_cast<grpc_jwt_claims*>(gpr_malloc(sizeof(grpc_jwt_claims)));
244
- memset(claims, 0, sizeof(grpc_jwt_claims));
245
- claims->json = json;
246
- claims->buffer = buffer;
245
+ static_cast<grpc_jwt_claims*>(gpr_zalloc(sizeof(grpc_jwt_claims)));
246
+ claims->json.Init(std::move(json));
247
247
  claims->iat = gpr_inf_past(GPR_CLOCK_REALTIME);
248
248
  claims->nbf = gpr_inf_past(GPR_CLOCK_REALTIME);
249
249
  claims->exp = gpr_inf_future(GPR_CLOCK_REALTIME);
250
250
 
251
251
  /* Per the spec, all fields are optional. */
252
- for (cur = json->child; cur != nullptr; cur = cur->next) {
253
- if (strcmp(cur->key, "sub") == 0) {
254
- claims->sub = validate_string_field(cur, "sub");
252
+ for (const auto& p : claims->json->object_value()) {
253
+ if (p.first == "sub") {
254
+ claims->sub = validate_string_field(p.second, "sub");
255
255
  if (claims->sub == nullptr) goto error;
256
- } else if (strcmp(cur->key, "iss") == 0) {
257
- claims->iss = validate_string_field(cur, "iss");
256
+ } else if (p.first == "iss") {
257
+ claims->iss = validate_string_field(p.second, "iss");
258
258
  if (claims->iss == nullptr) goto error;
259
- } else if (strcmp(cur->key, "aud") == 0) {
260
- claims->aud = validate_string_field(cur, "aud");
259
+ } else if (p.first == "aud") {
260
+ claims->aud = validate_string_field(p.second, "aud");
261
261
  if (claims->aud == nullptr) goto error;
262
- } else if (strcmp(cur->key, "jti") == 0) {
263
- claims->jti = validate_string_field(cur, "jti");
262
+ } else if (p.first == "jti") {
263
+ claims->jti = validate_string_field(p.second, "jti");
264
264
  if (claims->jti == nullptr) goto error;
265
- } else if (strcmp(cur->key, "iat") == 0) {
266
- claims->iat = validate_time_field(cur, "iat");
267
- if (gpr_time_cmp(claims->iat, gpr_time_0(GPR_CLOCK_REALTIME)) == 0)
265
+ } else if (p.first == "iat") {
266
+ claims->iat = validate_time_field(p.second, "iat");
267
+ if (gpr_time_cmp(claims->iat, gpr_time_0(GPR_CLOCK_REALTIME)) == 0) {
268
268
  goto error;
269
- } else if (strcmp(cur->key, "exp") == 0) {
270
- claims->exp = validate_time_field(cur, "exp");
271
- if (gpr_time_cmp(claims->exp, gpr_time_0(GPR_CLOCK_REALTIME)) == 0)
269
+ }
270
+ } else if (p.first == "exp") {
271
+ claims->exp = validate_time_field(p.second, "exp");
272
+ if (gpr_time_cmp(claims->exp, gpr_time_0(GPR_CLOCK_REALTIME)) == 0) {
272
273
  goto error;
273
- } else if (strcmp(cur->key, "nbf") == 0) {
274
- claims->nbf = validate_time_field(cur, "nbf");
275
- if (gpr_time_cmp(claims->nbf, gpr_time_0(GPR_CLOCK_REALTIME)) == 0)
274
+ }
275
+ } else if (p.first == "nbf") {
276
+ claims->nbf = validate_time_field(p.second, "nbf");
277
+ if (gpr_time_cmp(claims->nbf, gpr_time_0(GPR_CLOCK_REALTIME)) == 0) {
276
278
  goto error;
279
+ }
277
280
  }
278
281
  }
279
282
  return claims;
@@ -405,33 +408,32 @@ struct grpc_jwt_verifier {
405
408
  grpc_httpcli_context http_ctx;
406
409
  };
407
410
 
408
- static grpc_json* json_from_http(const grpc_httpcli_response* response) {
409
- grpc_json* json = nullptr;
410
-
411
+ static Json json_from_http(const grpc_httpcli_response* response) {
411
412
  if (response == nullptr) {
412
413
  gpr_log(GPR_ERROR, "HTTP response is NULL.");
413
- return nullptr;
414
+ return Json(); // JSON null
414
415
  }
415
416
  if (response->status != 200) {
416
417
  gpr_log(GPR_ERROR, "Call to http server failed with error %d.",
417
418
  response->status);
418
- return nullptr;
419
+ return Json(); // JSON null
419
420
  }
420
-
421
- json = grpc_json_parse_string_with_len(response->body, response->body_length);
422
- if (json == nullptr) {
421
+ grpc_error* error = GRPC_ERROR_NONE;
422
+ Json json = Json::Parse(
423
+ grpc_core::StringView(response->body, response->body_length), &error);
424
+ if (error != GRPC_ERROR_NONE) {
423
425
  gpr_log(GPR_ERROR, "Invalid JSON found in response.");
426
+ return Json(); // JSON null
424
427
  }
425
428
  return json;
426
429
  }
427
430
 
428
- static const grpc_json* find_property_by_name(const grpc_json* json,
429
- const char* name) {
430
- const grpc_json* cur;
431
- for (cur = json->child; cur != nullptr; cur = cur->next) {
432
- if (strcmp(cur->key, name) == 0) return cur;
431
+ static const Json* find_property_by_name(const Json& json, const char* name) {
432
+ auto it = json.object_value().find(name);
433
+ if (it == json.object_value().end()) {
434
+ return nullptr;
433
435
  }
434
- return nullptr;
436
+ return &it->second;
435
437
  }
436
438
 
437
439
  static EVP_PKEY* extract_pkey_from_x509(const char* x509_str) {
@@ -502,14 +504,15 @@ static int RSA_set0_key(RSA* r, BIGNUM* n, BIGNUM* e, BIGNUM* d) {
502
504
  }
503
505
  #endif // OPENSSL_VERSION_NUMBER < 0x10100000L
504
506
 
505
- static EVP_PKEY* pkey_from_jwk(const grpc_json* json, const char* kty) {
506
- const grpc_json* key_prop;
507
+ static EVP_PKEY* pkey_from_jwk(const Json& json, const char* kty) {
507
508
  RSA* rsa = nullptr;
508
509
  EVP_PKEY* result = nullptr;
509
510
  BIGNUM* tmp_n = nullptr;
510
511
  BIGNUM* tmp_e = nullptr;
512
+ Json::Object::const_iterator it;
511
513
 
512
- GPR_ASSERT(kty != nullptr && json != nullptr);
514
+ GPR_ASSERT(json.type() == Json::Type::OBJECT);
515
+ GPR_ASSERT(kty != nullptr);
513
516
  if (strcmp(kty, "RSA") != 0) {
514
517
  gpr_log(GPR_ERROR, "Unsupported key type %s.", kty);
515
518
  goto end;
@@ -519,19 +522,20 @@ static EVP_PKEY* pkey_from_jwk(const grpc_json* json, const char* kty) {
519
522
  gpr_log(GPR_ERROR, "Could not create rsa key.");
520
523
  goto end;
521
524
  }
522
- for (key_prop = json->child; key_prop != nullptr; key_prop = key_prop->next) {
523
- if (strcmp(key_prop->key, "n") == 0) {
524
- tmp_n = bignum_from_base64(validate_string_field(key_prop, "n"));
525
- if (tmp_n == nullptr) goto end;
526
- } else if (strcmp(key_prop->key, "e") == 0) {
527
- tmp_e = bignum_from_base64(validate_string_field(key_prop, "e"));
528
- if (tmp_e == nullptr) goto end;
529
- }
525
+ it = json.object_value().find("n");
526
+ if (it == json.object_value().end()) {
527
+ gpr_log(GPR_ERROR, "Missing RSA public key field.");
528
+ goto end;
530
529
  }
531
- if (tmp_e == nullptr || tmp_n == nullptr) {
530
+ tmp_n = bignum_from_base64(validate_string_field(it->second, "n"));
531
+ if (tmp_n == nullptr) goto end;
532
+ it = json.object_value().find("e");
533
+ if (it == json.object_value().end()) {
532
534
  gpr_log(GPR_ERROR, "Missing RSA public key field.");
533
535
  goto end;
534
536
  }
537
+ tmp_e = bignum_from_base64(validate_string_field(it->second, "e"));
538
+ if (tmp_e == nullptr) goto end;
535
539
  if (!RSA_set0_key(rsa, tmp_n, tmp_e, nullptr)) {
536
540
  gpr_log(GPR_ERROR, "Cannot set RSA key from inputs.");
537
541
  goto end;
@@ -549,48 +553,41 @@ end:
549
553
  return result;
550
554
  }
551
555
 
552
- static EVP_PKEY* find_verification_key(const grpc_json* json,
553
- const char* header_alg,
556
+ static EVP_PKEY* find_verification_key(const Json& json, const char* header_alg,
554
557
  const char* header_kid) {
555
- const grpc_json* jkey;
556
- const grpc_json* jwk_keys;
557
558
  /* Try to parse the json as a JWK set:
558
559
  https://tools.ietf.org/html/rfc7517#section-5. */
559
- jwk_keys = find_property_by_name(json, "keys");
560
- if (jwk_keys == nullptr) {
560
+ const Json* jwt_keys = find_property_by_name(json, "keys");
561
+ if (jwt_keys == nullptr) {
561
562
  /* Use the google proprietary format which is:
562
563
  { <kid1>: <x5091>, <kid2>: <x5092>, ... } */
563
- const grpc_json* cur = find_property_by_name(json, header_kid);
564
+ const Json* cur = find_property_by_name(json, header_kid);
564
565
  if (cur == nullptr) return nullptr;
565
- return extract_pkey_from_x509(cur->value);
566
+ return extract_pkey_from_x509(cur->string_value().c_str());
566
567
  }
567
-
568
- if (jwk_keys->type != GRPC_JSON_ARRAY) {
568
+ if (jwt_keys->type() != Json::Type::ARRAY) {
569
569
  gpr_log(GPR_ERROR,
570
570
  "Unexpected value type of keys property in jwks key set.");
571
571
  return nullptr;
572
572
  }
573
573
  /* Key format is specified in:
574
574
  https://tools.ietf.org/html/rfc7518#section-6. */
575
- for (jkey = jwk_keys->child; jkey != nullptr; jkey = jkey->next) {
576
- grpc_json* key_prop;
575
+ for (const Json& jkey : jwt_keys->array_value()) {
576
+ if (jkey.type() != Json::Type::OBJECT) continue;
577
577
  const char* alg = nullptr;
578
+ auto it = jkey.object_value().find("alg");
579
+ if (it != jkey.object_value().end()) {
580
+ alg = validate_string_field(it->second, "alg");
581
+ }
578
582
  const char* kid = nullptr;
583
+ it = jkey.object_value().find("kid");
584
+ if (it != jkey.object_value().end()) {
585
+ kid = validate_string_field(it->second, "kid");
586
+ }
579
587
  const char* kty = nullptr;
580
-
581
- if (jkey->type != GRPC_JSON_OBJECT) continue;
582
- for (key_prop = jkey->child; key_prop != nullptr;
583
- key_prop = key_prop->next) {
584
- if (strcmp(key_prop->key, "alg") == 0 &&
585
- key_prop->type == GRPC_JSON_STRING) {
586
- alg = key_prop->value;
587
- } else if (strcmp(key_prop->key, "kid") == 0 &&
588
- key_prop->type == GRPC_JSON_STRING) {
589
- kid = key_prop->value;
590
- } else if (strcmp(key_prop->key, "kty") == 0 &&
591
- key_prop->type == GRPC_JSON_STRING) {
592
- kty = key_prop->value;
593
- }
588
+ it = jkey.object_value().find("kty");
589
+ if (it != jkey.object_value().end()) {
590
+ kty = validate_string_field(it->second, "kty");
594
591
  }
595
592
  if (alg != nullptr && kid != nullptr && kty != nullptr &&
596
593
  strcmp(kid, header_kid) == 0 && strcmp(alg, header_alg) == 0) {
@@ -638,12 +635,12 @@ end:
638
635
 
639
636
  static void on_keys_retrieved(void* user_data, grpc_error* /*error*/) {
640
637
  verifier_cb_ctx* ctx = static_cast<verifier_cb_ctx*>(user_data);
641
- grpc_json* json = json_from_http(&ctx->responses[HTTP_RESPONSE_KEYS]);
638
+ Json json = json_from_http(&ctx->responses[HTTP_RESPONSE_KEYS]);
642
639
  EVP_PKEY* verification_key = nullptr;
643
640
  grpc_jwt_verifier_status status = GRPC_JWT_VERIFIER_GENERIC_ERROR;
644
641
  grpc_jwt_claims* claims = nullptr;
645
642
 
646
- if (json == nullptr) {
643
+ if (json.type() == Json::Type::JSON_NULL) {
647
644
  status = GRPC_JWT_VERIFIER_KEY_RETRIEVAL_ERROR;
648
645
  goto end;
649
646
  }
@@ -670,29 +667,28 @@ static void on_keys_retrieved(void* user_data, grpc_error* /*error*/) {
670
667
  }
671
668
 
672
669
  end:
673
- grpc_json_destroy(json);
674
670
  EVP_PKEY_free(verification_key);
675
671
  ctx->user_cb(ctx->user_data, status, claims);
676
672
  verifier_cb_ctx_destroy(ctx);
677
673
  }
678
674
 
679
675
  static void on_openid_config_retrieved(void* user_data, grpc_error* /*error*/) {
680
- const grpc_json* cur;
681
676
  verifier_cb_ctx* ctx = static_cast<verifier_cb_ctx*>(user_data);
682
677
  const grpc_http_response* response = &ctx->responses[HTTP_RESPONSE_OPENID];
683
- grpc_json* json = json_from_http(response);
678
+ Json json = json_from_http(response);
684
679
  grpc_httpcli_request req;
685
680
  const char* jwks_uri;
686
681
  grpc_resource_quota* resource_quota = nullptr;
682
+ const Json* cur;
687
683
 
688
684
  /* TODO(jboeuf): Cache the jwks_uri in order to avoid this hop next time. */
689
- if (json == nullptr) goto error;
685
+ if (json.type() == Json::Type::JSON_NULL) goto error;
690
686
  cur = find_property_by_name(json, "jwks_uri");
691
687
  if (cur == nullptr) {
692
688
  gpr_log(GPR_ERROR, "Could not find jwks_uri in openid config.");
693
689
  goto error;
694
690
  }
695
- jwks_uri = validate_string_field(cur, "jwks_uri");
691
+ jwks_uri = validate_string_field(*cur, "jwks_uri");
696
692
  if (jwks_uri == nullptr) goto error;
697
693
  if (strstr(jwks_uri, "https://") != jwks_uri) {
698
694
  gpr_log(GPR_ERROR, "Invalid non https jwks_uri: %s.", jwks_uri);
@@ -718,12 +714,10 @@ static void on_openid_config_retrieved(void* user_data, grpc_error* /*error*/) {
718
714
  GRPC_CLOSURE_CREATE(on_keys_retrieved, ctx, grpc_schedule_on_exec_ctx),
719
715
  &ctx->responses[HTTP_RESPONSE_KEYS]);
720
716
  grpc_resource_quota_unref_internal(resource_quota);
721
- grpc_json_destroy(json);
722
717
  gpr_free(req.host);
723
718
  return;
724
719
 
725
720
  error:
726
- grpc_json_destroy(json);
727
721
  ctx->user_cb(ctx->user_data, GRPC_JWT_VERIFIER_KEY_RETRIEVAL_ERROR, nullptr);
728
722
  verifier_cb_ctx_destroy(ctx);
729
723
  }
@@ -860,32 +854,28 @@ void grpc_jwt_verifier_verify(grpc_jwt_verifier* verifier,
860
854
  grpc_jwt_verification_done_cb cb,
861
855
  void* user_data) {
862
856
  const char* dot = nullptr;
863
- grpc_json* json;
864
857
  jose_header* header = nullptr;
865
858
  grpc_jwt_claims* claims = nullptr;
866
- grpc_slice header_buffer;
867
- grpc_slice claims_buffer;
868
859
  grpc_slice signature;
869
860
  size_t signed_jwt_len;
870
861
  const char* cur = jwt;
862
+ Json json;
871
863
 
872
864
  GPR_ASSERT(verifier != nullptr && jwt != nullptr && audience != nullptr &&
873
865
  cb != nullptr);
874
866
  dot = strchr(cur, '.');
875
867
  if (dot == nullptr) goto error;
876
- json = parse_json_part_from_jwt(cur, static_cast<size_t>(dot - cur),
877
- &header_buffer);
878
- if (json == nullptr) goto error;
879
- header = jose_header_from_json(json, header_buffer);
868
+ json = parse_json_part_from_jwt(cur, static_cast<size_t>(dot - cur));
869
+ if (json.type() == Json::Type::JSON_NULL) goto error;
870
+ header = jose_header_from_json(std::move(json));
880
871
  if (header == nullptr) goto error;
881
872
 
882
873
  cur = dot + 1;
883
874
  dot = strchr(cur, '.');
884
875
  if (dot == nullptr) goto error;
885
- json = parse_json_part_from_jwt(cur, static_cast<size_t>(dot - cur),
886
- &claims_buffer);
887
- if (json == nullptr) goto error;
888
- claims = grpc_jwt_claims_from_json(json, claims_buffer);
876
+ json = parse_json_part_from_jwt(cur, static_cast<size_t>(dot - cur));
877
+ if (json.type() == Json::Type::JSON_NULL) goto error;
878
+ claims = grpc_jwt_claims_from_json(std::move(json));
889
879
  if (claims == nullptr) goto error;
890
880
 
891
881
  signed_jwt_len = static_cast<size_t>(dot - jwt);