grpc 1.27.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 (681) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +713 -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 +74 -32
  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/child_policy_handler.cc +291 -0
  15. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +83 -0
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +48 -196
  17. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +18 -21
  18. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +9 -13
  19. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +83 -80
  20. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +605 -768
  21. data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -3
  22. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +43 -75
  23. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  24. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +57 -70
  25. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +1 -1
  26. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -1
  27. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
  28. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +3 -3
  29. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -2
  30. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
  31. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +3 -3
  32. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +31 -7
  33. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +228 -286
  34. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +2 -2
  35. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +37 -176
  36. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +7 -11
  37. data/src/core/ext/filters/client_channel/service_config.cc +91 -160
  38. data/src/core/ext/filters/client_channel/service_config.h +14 -21
  39. data/src/core/ext/filters/client_channel/xds/xds_api.cc +1221 -268
  40. data/src/core/ext/filters/client_channel/xds/xds_api.h +211 -152
  41. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +212 -352
  42. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +23 -40
  43. data/src/core/ext/filters/client_channel/xds/xds_channel.h +3 -1
  44. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +12 -9
  45. data/src/core/ext/filters/client_channel/xds/xds_client.cc +742 -289
  46. data/src/core/ext/filters/client_channel/xds/xds_client.h +74 -38
  47. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +53 -128
  48. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +105 -132
  49. data/src/core/ext/filters/message_size/message_size_filter.cc +32 -35
  50. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  51. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +3 -6
  52. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +4 -6
  53. data/src/core/ext/transport/chttp2/transport/writing.cc +1 -1
  54. data/src/core/ext/transport/inproc/inproc_transport.cc +22 -42
  55. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +17 -0
  56. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +30 -0
  57. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +27 -0
  58. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +54 -0
  59. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +46 -21
  60. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +116 -29
  61. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +4 -362
  62. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +14 -1337
  63. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +390 -0
  64. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +1411 -0
  65. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +29 -8
  66. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +60 -0
  67. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +1 -0
  68. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +1 -0
  69. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +5 -3
  70. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +6 -2
  71. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +48 -5
  72. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +154 -4
  73. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +19 -15
  74. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +46 -32
  75. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +26 -4
  76. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +70 -0
  77. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +42 -25
  78. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +83 -25
  79. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +1 -0
  80. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +43 -7
  81. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +115 -0
  82. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -0
  83. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +7 -68
  84. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +14 -201
  85. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +91 -0
  86. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +240 -0
  87. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +1 -71
  88. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +3 -228
  89. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +88 -0
  90. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +258 -0
  91. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +1 -0
  92. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +30 -0
  93. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +53 -0
  94. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +104 -0
  95. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +383 -0
  96. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +17 -0
  97. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +33 -0
  98. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +144 -0
  99. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +527 -0
  100. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +42 -0
  101. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +112 -0
  102. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +29 -0
  103. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +53 -0
  104. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +62 -0
  105. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +199 -0
  106. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +17 -0
  107. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +33 -0
  108. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +793 -0
  109. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +2936 -0
  110. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +58 -0
  111. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +134 -0
  112. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +27 -0
  113. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +53 -0
  114. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +227 -0
  115. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +725 -0
  116. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +296 -0
  117. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +1072 -0
  118. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +32 -0
  119. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +65 -0
  120. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +47 -0
  121. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +108 -0
  122. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +52 -0
  123. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +133 -0
  124. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +87 -0
  125. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +258 -0
  126. data/src/core/ext/upb-generated/envoy/type/range.upb.c +11 -0
  127. data/src/core/ext/upb-generated/envoy/type/range.upb.h +27 -0
  128. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +28 -0
  129. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +62 -0
  130. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +88 -0
  131. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +249 -0
  132. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +30 -27
  133. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +64 -52
  134. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +48 -0
  135. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +104 -0
  136. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +17 -0
  137. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +30 -0
  138. data/src/core/ext/upb-generated/validate/validate.upb.c +38 -34
  139. data/src/core/ext/upb-generated/validate/validate.upb.h +129 -99
  140. data/src/core/lib/channel/channel_trace.cc +32 -41
  141. data/src/core/lib/channel/channel_trace.h +3 -3
  142. data/src/core/lib/channel/channelz.cc +158 -248
  143. data/src/core/lib/channel/channelz.h +12 -15
  144. data/src/core/lib/channel/channelz_registry.cc +47 -74
  145. data/src/core/lib/channel/channelz_registry.h +4 -4
  146. data/src/core/lib/gpr/sync_abseil.cc +114 -0
  147. data/src/core/lib/gpr/sync_posix.cc +8 -5
  148. data/src/core/lib/gpr/sync_windows.cc +4 -2
  149. data/src/core/lib/gprpp/host_port.cc +1 -1
  150. data/src/core/lib/gprpp/inlined_vector.h +1 -210
  151. data/src/core/lib/gprpp/memory.h +2 -6
  152. data/src/core/lib/gprpp/optional.h +0 -41
  153. data/src/core/lib/gprpp/string_view.h +5 -114
  154. data/src/core/lib/gprpp/sync.h +9 -0
  155. data/src/core/lib/iomgr/buffer_list.cc +36 -35
  156. data/src/core/lib/iomgr/error.h +4 -4
  157. data/src/core/lib/iomgr/ev_epollex_linux.cc +12 -4
  158. data/src/core/lib/iomgr/load_file.cc +1 -0
  159. data/src/core/lib/iomgr/tcp_client_posix.cc +17 -17
  160. data/src/core/lib/iomgr/tcp_client_posix.h +6 -6
  161. data/src/core/lib/iomgr/tcp_posix.cc +2 -1
  162. data/src/core/lib/iomgr/work_serializer.cc +155 -0
  163. data/src/core/lib/iomgr/work_serializer.h +65 -0
  164. data/src/core/lib/json/json.h +209 -79
  165. data/src/core/lib/json/json_reader.cc +469 -455
  166. data/src/core/lib/json/json_writer.cc +173 -169
  167. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  168. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +10 -8
  169. data/src/core/lib/security/credentials/jwt/json_token.cc +26 -56
  170. data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
  171. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -18
  172. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +149 -159
  173. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
  174. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +37 -34
  175. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
  176. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +2 -1
  177. data/src/core/lib/security/security_connector/local/local_security_connector.cc +5 -7
  178. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +3 -15
  179. data/src/core/lib/security/security_connector/ssl_utils.cc +3 -1
  180. data/src/core/lib/security/security_connector/ssl_utils.h +0 -1
  181. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +24 -1
  182. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -1
  183. data/src/core/lib/security/transport/security_handshaker.cc +2 -2
  184. data/src/core/lib/security/util/json_util.cc +22 -15
  185. data/src/core/lib/security/util/json_util.h +2 -2
  186. data/src/core/lib/surface/version.cc +1 -1
  187. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  188. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  189. data/src/core/tsi/grpc_shadow_boringssl.h +1333 -1319
  190. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  191. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -1
  192. data/src/core/tsi/ssl_transport_security.cc +2 -1
  193. data/src/ruby/lib/grpc/version.rb +1 -1
  194. data/third_party/abseil-cpp/absl/base/attributes.h +1 -1
  195. data/third_party/abseil-cpp/absl/base/config.h +10 -4
  196. data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +30 -9
  197. data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
  198. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +7 -5
  199. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +2 -1
  200. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +2 -2
  201. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -3
  202. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +3 -3
  203. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +37 -0
  204. data/third_party/abseil-cpp/absl/base/options.h +2 -10
  205. data/third_party/abseil-cpp/absl/strings/charconv.cc +0 -1
  206. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +388 -0
  207. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +432 -0
  208. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +245 -0
  209. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +209 -0
  210. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +326 -0
  211. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +51 -0
  212. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +415 -0
  213. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +493 -0
  214. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +23 -0
  215. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
  216. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +104 -0
  217. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +334 -0
  218. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +333 -0
  219. data/third_party/abseil-cpp/absl/strings/str_format.h +537 -0
  220. data/third_party/abseil-cpp/absl/strings/string_view.h +19 -11
  221. data/{src/boringssl → third_party/boringssl-with-bazel}/err_data.c +0 -0
  222. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bitstr.c +0 -0
  223. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bool.c +0 -0
  224. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_d2i_fp.c +0 -0
  225. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_dup.c +0 -0
  226. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_enum.c +0 -0
  227. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_gentm.c +0 -0
  228. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_i2d_fp.c +0 -0
  229. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_int.c +0 -0
  230. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_mbstr.c +0 -0
  231. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_object.c +0 -0
  232. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_octet.c +0 -0
  233. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_print.c +0 -0
  234. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_strnid.c +0 -0
  235. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_time.c +3 -4
  236. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_type.c +0 -0
  237. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utctm.c +0 -0
  238. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utf8.c +0 -0
  239. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_lib.c +0 -0
  240. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_locl.h +0 -0
  241. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_par.c +0 -0
  242. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn_pack.c +0 -0
  243. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_enum.c +0 -0
  244. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_int.c +0 -0
  245. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_string.c +0 -0
  246. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_dec.c +0 -0
  247. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_enc.c +0 -0
  248. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_fre.c +0 -0
  249. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_new.c +0 -0
  250. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_typ.c +0 -0
  251. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_utl.c +0 -0
  252. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/time_support.c +0 -0
  253. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/base64/base64.c +0 -0
  254. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio.c +0 -0
  255. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio_mem.c +0 -0
  256. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/connect.c +3 -4
  257. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/fd.c +0 -1
  258. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/file.c +5 -6
  259. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/hexdump.c +0 -0
  260. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/internal.h +0 -0
  261. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/pair.c +0 -1
  262. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/printf.c +0 -0
  263. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket.c +0 -0
  264. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket_helper.c +0 -0
  265. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/bn_asn1.c +0 -0
  266. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/convert.c +0 -0
  267. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/buf/buf.c +10 -69
  268. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/asn1_compat.c +0 -0
  269. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/ber.c +0 -0
  270. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbb.c +41 -2
  271. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbs.c +60 -3
  272. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/internal.h +0 -0
  273. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/unicode.c +0 -0
  274. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/chacha.c +0 -0
  275. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/internal.h +0 -0
  276. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/cipher_extra.c +0 -0
  277. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/derive_key.c +0 -0
  278. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesccm.c +0 -0
  279. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesctrhmac.c +0 -0
  280. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesgcmsiv.c +8 -0
  281. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_chacha20poly1305.c +0 -0
  282. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_null.c +0 -0
  283. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc2.c +0 -0
  284. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc4.c +0 -0
  285. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_tls.c +0 -0
  286. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/internal.h +0 -0
  287. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/tls_cbc.c +0 -0
  288. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cmac/cmac.c +0 -0
  289. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf.c +0 -0
  290. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf_def.h +0 -0
  291. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/internal.h +0 -0
  292. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-fuchsia.c +0 -0
  293. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-linux.c +0 -0
  294. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.c +0 -1
  295. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.h +0 -0
  296. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm.c +0 -0
  297. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-intel.c +0 -0
  298. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-ppc64le.c +0 -0
  299. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/crypto.c +0 -0
  300. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/curve25519/spake25519.c +0 -0
  301. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/check.c +3 -3
  302. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh.c +1 -2
  303. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh_asn1.c +0 -0
  304. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/params.c +0 -0
  305. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/digest_extra/digest_extra.c +0 -0
  306. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa.c +0 -0
  307. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa_asn1.c +0 -0
  308. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_asn1.c +0 -0
  309. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_derive.c +2 -3
  310. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdh_extra/ecdh_extra.c +0 -0
  311. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdsa_extra/ecdsa_asn1.c +0 -0
  312. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/engine/engine.c +0 -0
  313. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/err.c +6 -6
  314. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/internal.h +0 -0
  315. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/digestsign.c +0 -0
  316. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp.c +0 -0
  317. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_asn1.c +0 -0
  318. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_ctx.c +0 -0
  319. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/internal.h +0 -0
  320. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_dsa_asn1.c +0 -0
  321. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec.c +0 -1
  322. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec_asn1.c +0 -0
  323. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519.c +0 -0
  324. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519_asn1.c +0 -0
  325. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa.c +14 -2
  326. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa_asn1.c +0 -0
  327. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519.c +0 -0
  328. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519_asn1.c +1 -2
  329. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/pbkdf.c +0 -0
  330. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/print.c +0 -0
  331. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/scrypt.c +0 -0
  332. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/sign.c +0 -0
  333. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ex_data.c +0 -0
  334. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +108 -0
  335. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1282 -0
  336. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/internal.h +5 -7
  337. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/key_wrap.c +0 -0
  338. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/mode_wrappers.c +0 -2
  339. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bcm.c +2 -0
  340. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/add.c +0 -0
  341. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -0
  342. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bn.c +0 -0
  343. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bytes.c +0 -0
  344. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/cmp.c +0 -0
  345. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/ctx.c +0 -0
  346. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div.c +0 -0
  347. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div_extra.c +0 -0
  348. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/exponentiation.c +0 -0
  349. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd.c +0 -0
  350. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd_extra.c +0 -0
  351. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/generic.c +0 -0
  352. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/internal.h +0 -0
  353. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/jacobi.c +0 -0
  354. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery.c +0 -0
  355. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery_inv.c +0 -0
  356. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/mul.c +0 -0
  357. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/prime.c +11 -12
  358. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/random.c +0 -0
  359. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.c +0 -0
  360. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.h +0 -0
  361. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/shift.c +0 -0
  362. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/sqrt.c +0 -0
  363. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/aead.c +0 -0
  364. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/cipher.c +0 -0
  365. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_aes.c +3 -5
  366. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_des.c +0 -0
  367. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/internal.h +0 -0
  368. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/delocate.h +0 -0
  369. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/des.c +0 -0
  370. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/internal.h +0 -0
  371. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digest.c +0 -0
  372. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digests.c +0 -0
  373. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/internal.h +0 -0
  374. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/md32_common.h +0 -0
  375. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec.c +0 -0
  376. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_key.c +1 -1
  377. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_montgomery.c +0 -0
  378. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/felem.c +0 -0
  379. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/internal.h +0 -0
  380. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/oct.c +0 -0
  381. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p224-64.c +0 -0
  382. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64-table.h +0 -0
  383. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.c +0 -0
  384. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.h +0 -0
  385. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/scalar.c +0 -0
  386. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/simple.c +0 -0
  387. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/simple_mul.c +0 -0
  388. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/util.c +0 -0
  389. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/wnaf.c +0 -0
  390. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdh/ecdh.c +0 -0
  391. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdsa/ecdsa.c +0 -0
  392. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/fips_shared_support.c +0 -0
  393. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/hmac/hmac.c +0 -0
  394. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/is_fips.c +0 -0
  395. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md4/md4.c +0 -0
  396. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/internal.h +0 -0
  397. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/md5.c +0 -0
  398. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cbc.c +0 -0
  399. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cfb.c +0 -0
  400. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ctr.c +0 -0
  401. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/gcm.c +45 -193
  402. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +304 -0
  403. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/internal.h +8 -18
  404. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ofb.c +0 -0
  405. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/polyval.c +0 -0
  406. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/ctrdrbg.c +0 -0
  407. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/internal.h +0 -0
  408. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/rand.c +0 -0
  409. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/urandom.c +0 -0
  410. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/blinding.c +0 -0
  411. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/internal.h +0 -0
  412. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/padding.c +0 -0
  413. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa.c +7 -1
  414. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa_impl.c +60 -51
  415. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/self_check/self_check.c +0 -0
  416. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/internal.h +0 -0
  417. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1-altivec.c +0 -0
  418. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1.c +0 -0
  419. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha256.c +0 -0
  420. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha512.c +0 -0
  421. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/internal.h +0 -0
  422. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/kdf.c +0 -0
  423. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hkdf/hkdf.c +0 -0
  424. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/hrss.c +210 -311
  425. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/internal.h +0 -1
  426. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/internal.h +21 -1
  427. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/lhash/lhash.c +0 -0
  428. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/mem.c +70 -0
  429. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj.c +16 -21
  430. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_dat.h +27 -6
  431. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_xref.c +0 -0
  432. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_all.c +0 -0
  433. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_info.c +0 -1
  434. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_lib.c +7 -7
  435. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_oth.c +0 -1
  436. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pk8.c +0 -1
  437. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pkey.c +0 -1
  438. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_x509.c +0 -0
  439. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_xaux.c +0 -0
  440. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/internal.h +0 -0
  441. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7.c +0 -0
  442. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7_x509.c +1 -1
  443. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/internal.h +0 -0
  444. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/p5_pbev2.c +0 -0
  445. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8.c +0 -0
  446. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8_x509.c +0 -0
  447. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/internal.h +0 -0
  448. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305.c +2 -2
  449. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_arm.c +21 -20
  450. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_vec.c +34 -17
  451. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/internal.h +0 -0
  452. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/pool.c +1 -2
  453. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/deterministic.c +0 -0
  454. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/forkunsafe.c +0 -0
  455. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/fuchsia.c +0 -0
  456. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/rand_extra.c +0 -0
  457. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/windows.c +0 -0
  458. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rc4/rc4.c +0 -0
  459. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_c11.c +0 -0
  460. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_lock.c +0 -0
  461. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_asn1.c +0 -0
  462. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_print.c +0 -0
  463. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/siphash/siphash.c +3 -1
  464. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/stack/stack.c +0 -0
  465. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread.c +0 -0
  466. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_none.c +0 -0
  467. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_pthread.c +0 -0
  468. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_win.c +0 -0
  469. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_digest.c +0 -0
  470. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_sign.c +0 -0
  471. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_strex.c +0 -0
  472. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_verify.c +0 -1
  473. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/algorithm.c +0 -0
  474. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/asn1_gen.c +0 -0
  475. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_dir.c +1 -1
  476. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_file.c +0 -1
  477. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/charmap.h +0 -0
  478. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/i2d_pr.c +0 -0
  479. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/internal.h +0 -0
  480. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/rsa_pss.c +0 -0
  481. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_crl.c +0 -0
  482. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_req.c +0 -0
  483. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509.c +0 -0
  484. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509a.c +0 -0
  485. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/vpm_int.h +0 -0
  486. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509.c +0 -0
  487. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_att.c +0 -0
  488. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_cmp.c +0 -1
  489. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_d2.c +0 -0
  490. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_def.c +0 -0
  491. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_ext.c +0 -0
  492. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_lu.c +0 -0
  493. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_obj.c +1 -1
  494. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_r2x.c +0 -1
  495. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_req.c +0 -1
  496. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_set.c +0 -0
  497. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_trs.c +1 -2
  498. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_txt.c +0 -0
  499. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_v3.c +0 -0
  500. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vfy.c +0 -1
  501. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vpm.c +3 -4
  502. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509cset.c +0 -0
  503. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509name.c +0 -0
  504. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509rset.c +0 -0
  505. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509spki.c +0 -0
  506. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_algor.c +0 -0
  507. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_all.c +0 -1
  508. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_attrib.c +0 -0
  509. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_crl.c +0 -0
  510. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_exten.c +0 -0
  511. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_info.c +0 -0
  512. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_name.c +0 -0
  513. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pkey.c +0 -0
  514. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pubkey.c +0 -0
  515. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_req.c +0 -0
  516. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_sig.c +0 -0
  517. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_spki.c +0 -0
  518. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_val.c +0 -0
  519. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509.c +0 -0
  520. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509a.c +0 -0
  521. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/ext_dat.h +0 -0
  522. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/internal.h +0 -0
  523. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_cache.c +0 -0
  524. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_data.c +0 -0
  525. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_int.h +0 -0
  526. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_lib.c +0 -0
  527. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_map.c +0 -0
  528. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_node.c +0 -0
  529. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_tree.c +0 -0
  530. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akey.c +0 -0
  531. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akeya.c +0 -0
  532. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_alt.c +3 -3
  533. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bcons.c +0 -0
  534. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bitst.c +0 -0
  535. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_conf.c +0 -0
  536. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_cpols.c +0 -0
  537. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_crld.c +0 -0
  538. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_enum.c +2 -2
  539. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_extku.c +0 -0
  540. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_genn.c +0 -0
  541. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ia5.c +0 -0
  542. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_info.c +4 -5
  543. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_int.c +0 -0
  544. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_lib.c +0 -0
  545. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ncons.c +0 -0
  546. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ocsp.c +0 -0
  547. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pci.c +0 -0
  548. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcia.c +0 -0
  549. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcons.c +0 -0
  550. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pku.c +0 -0
  551. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pmaps.c +0 -0
  552. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_prn.c +0 -0
  553. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_purp.c +2 -3
  554. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_skey.c +0 -0
  555. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_sxnet.c +0 -0
  556. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_utl.c +11 -12
  557. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aead.h +0 -0
  558. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aes.h +0 -0
  559. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/arm_arch.h +0 -0
  560. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1.h +0 -0
  561. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1_mac.h +0 -0
  562. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1t.h +0 -0
  563. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base.h +0 -0
  564. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base64.h +0 -0
  565. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bio.h +0 -0
  566. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/blowfish.h +0 -0
  567. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bn.h +32 -20
  568. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buf.h +9 -9
  569. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buffer.h +0 -0
  570. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bytestring.h +34 -0
  571. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cast.h +0 -0
  572. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/chacha.h +0 -0
  573. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cipher.h +0 -0
  574. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cmac.h +0 -0
  575. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/conf.h +0 -0
  576. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cpu.h +0 -0
  577. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/crypto.h +0 -0
  578. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/curve25519.h +0 -0
  579. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/des.h +0 -0
  580. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dh.h +0 -0
  581. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/digest.h +0 -0
  582. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dsa.h +0 -0
  583. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dtls1.h +0 -0
  584. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/e_os2.h +0 -0
  585. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec.h +11 -4
  586. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec_key.h +4 -2
  587. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdh.h +0 -0
  588. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdsa.h +0 -0
  589. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/engine.h +0 -0
  590. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/err.h +11 -9
  591. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/evp.h +20 -0
  592. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ex_data.h +0 -0
  593. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hkdf.h +0 -0
  594. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hmac.h +0 -0
  595. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hrss.h +0 -0
  596. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/is_boringssl.h +0 -0
  597. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/lhash.h +0 -0
  598. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md4.h +0 -0
  599. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md5.h +0 -0
  600. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/mem.h +17 -2
  601. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/nid.h +9 -0
  602. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj.h +0 -0
  603. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj_mac.h +0 -0
  604. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/objects.h +0 -0
  605. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslconf.h +0 -0
  606. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslv.h +0 -0
  607. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ossl_typ.h +0 -0
  608. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pem.h +0 -0
  609. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs12.h +0 -0
  610. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs7.h +0 -0
  611. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs8.h +0 -0
  612. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/poly1305.h +5 -7
  613. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pool.h +0 -0
  614. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rand.h +0 -0
  615. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rc4.h +0 -0
  616. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ripemd.h +0 -0
  617. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rsa.h +0 -0
  618. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/safestack.h +0 -0
  619. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/sha.h +0 -0
  620. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/siphash.h +0 -0
  621. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/span.h +0 -0
  622. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/srtp.h +0 -0
  623. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl.h +10 -20
  624. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl3.h +0 -0
  625. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/stack.h +0 -0
  626. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/thread.h +0 -0
  627. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/tls1.h +0 -3
  628. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/type_check.h +0 -0
  629. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509.h +0 -0
  630. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509_vfy.h +0 -0
  631. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509v3.h +0 -0
  632. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/bio_ssl.cc +0 -0
  633. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_both.cc +0 -1
  634. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_lib.cc +0 -0
  635. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_pkt.cc +0 -1
  636. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_srtp.cc +0 -0
  637. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_method.cc +0 -1
  638. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_record.cc +0 -0
  639. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handoff.cc +126 -29
  640. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake.cc +5 -4
  641. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_client.cc +24 -13
  642. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_server.cc +1 -5
  643. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/internal.h +32 -26
  644. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_both.cc +0 -0
  645. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_lib.cc +2 -3
  646. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_pkt.cc +0 -1
  647. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_aead_ctx.cc +0 -0
  648. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_asn1.cc +1 -2
  649. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_buffer.cc +34 -15
  650. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cert.cc +0 -1
  651. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cipher.cc +0 -1
  652. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_file.cc +0 -0
  653. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_key_share.cc +0 -0
  654. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_lib.cc +13 -14
  655. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_privkey.cc +0 -0
  656. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_session.cc +2 -1
  657. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_stat.cc +0 -0
  658. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_transcript.cc +0 -0
  659. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_versions.cc +1 -1
  660. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_x509.cc +0 -0
  661. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_enc.cc +0 -0
  662. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_lib.cc +11 -171
  663. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_both.cc +0 -0
  664. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_client.cc +3 -4
  665. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_enc.cc +5 -1
  666. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_server.cc +78 -101
  667. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_method.cc +1 -1
  668. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_record.cc +7 -2
  669. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519.c +0 -0
  670. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_32.h +0 -0
  671. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_64.h +0 -0
  672. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_tables.h +0 -0
  673. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/internal.h +0 -0
  674. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256.c +0 -0
  675. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256_32.h +0 -0
  676. data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256_64.h +0 -0
  677. metadata +567 -494
  678. data/src/core/lib/iomgr/logical_thread.cc +0 -103
  679. data/src/core/lib/iomgr/logical_thread.h +0 -52
  680. data/src/core/lib/json/json.cc +0 -94
  681. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +0 -860
@@ -0,0 +1,304 @@
1
+ /* Copyright (c) 2019, Google Inc.
2
+ *
3
+ * Permission to use, copy, modify, and/or distribute this software for any
4
+ * purpose with or without fee is hereby granted, provided that the above
5
+ * copyright notice and this permission notice appear in all copies.
6
+ *
7
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
10
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
12
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
13
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
14
+
15
+ #include <openssl/base.h>
16
+
17
+ #include "../../internal.h"
18
+ #include "internal.h"
19
+
20
+ #if !defined(BORINGSSL_HAS_UINT128) && defined(OPENSSL_SSE2)
21
+ #include <emmintrin.h>
22
+ #endif
23
+
24
+
25
+ // This file contains a constant-time implementation of GHASH based on the notes
26
+ // in https://bearssl.org/constanttime.html#ghash-for-gcm and the reduction
27
+ // algorithm described in
28
+ // https://crypto.stanford.edu/RealWorldCrypto/slides/gueron.pdf.
29
+ //
30
+ // Unlike the BearSSL notes, we use uint128_t in the 64-bit implementation. Our
31
+ // primary compilers (clang, clang-cl, and gcc) all support it. MSVC will run
32
+ // the 32-bit implementation, but we can use its intrinsics if necessary.
33
+
34
+ #if defined(BORINGSSL_HAS_UINT128)
35
+
36
+ static void gcm_mul64_nohw(uint64_t *out_lo, uint64_t *out_hi, uint64_t a,
37
+ uint64_t b) {
38
+ // One term every four bits means the largest term is 64/4 = 16, which barely
39
+ // overflows into the next term. Using one term every five bits would cost 25
40
+ // multiplications instead of 16. It is faster to mask off the bottom four
41
+ // bits of |a|, giving a largest term of 60/4 = 15, and apply the bottom bits
42
+ // separately.
43
+ uint64_t a0 = a & UINT64_C(0x1111111111111110);
44
+ uint64_t a1 = a & UINT64_C(0x2222222222222220);
45
+ uint64_t a2 = a & UINT64_C(0x4444444444444440);
46
+ uint64_t a3 = a & UINT64_C(0x8888888888888880);
47
+
48
+ uint64_t b0 = b & UINT64_C(0x1111111111111111);
49
+ uint64_t b1 = b & UINT64_C(0x2222222222222222);
50
+ uint64_t b2 = b & UINT64_C(0x4444444444444444);
51
+ uint64_t b3 = b & UINT64_C(0x8888888888888888);
52
+
53
+ uint128_t c0 = (a0 * (uint128_t)b0) ^ (a1 * (uint128_t)b3) ^
54
+ (a2 * (uint128_t)b2) ^ (a3 * (uint128_t)b1);
55
+ uint128_t c1 = (a0 * (uint128_t)b1) ^ (a1 * (uint128_t)b0) ^
56
+ (a2 * (uint128_t)b3) ^ (a3 * (uint128_t)b2);
57
+ uint128_t c2 = (a0 * (uint128_t)b2) ^ (a1 * (uint128_t)b1) ^
58
+ (a2 * (uint128_t)b0) ^ (a3 * (uint128_t)b3);
59
+ uint128_t c3 = (a0 * (uint128_t)b3) ^ (a1 * (uint128_t)b2) ^
60
+ (a2 * (uint128_t)b1) ^ (a3 * (uint128_t)b0);
61
+
62
+ // Multiply the bottom four bits of |a| with |b|.
63
+ uint64_t a0_mask = UINT64_C(0) - (a & 1);
64
+ uint64_t a1_mask = UINT64_C(0) - ((a >> 1) & 1);
65
+ uint64_t a2_mask = UINT64_C(0) - ((a >> 2) & 1);
66
+ uint64_t a3_mask = UINT64_C(0) - ((a >> 3) & 1);
67
+ uint128_t extra = (a0_mask & b) ^ ((uint128_t)(a1_mask & b) << 1) ^
68
+ ((uint128_t)(a2_mask & b) << 2) ^
69
+ ((uint128_t)(a3_mask & b) << 3);
70
+
71
+ *out_lo = (((uint64_t)c0) & UINT64_C(0x1111111111111111)) ^
72
+ (((uint64_t)c1) & UINT64_C(0x2222222222222222)) ^
73
+ (((uint64_t)c2) & UINT64_C(0x4444444444444444)) ^
74
+ (((uint64_t)c3) & UINT64_C(0x8888888888888888)) ^ ((uint64_t)extra);
75
+ *out_hi = (((uint64_t)(c0 >> 64)) & UINT64_C(0x1111111111111111)) ^
76
+ (((uint64_t)(c1 >> 64)) & UINT64_C(0x2222222222222222)) ^
77
+ (((uint64_t)(c2 >> 64)) & UINT64_C(0x4444444444444444)) ^
78
+ (((uint64_t)(c3 >> 64)) & UINT64_C(0x8888888888888888)) ^
79
+ ((uint64_t)(extra >> 64));
80
+ }
81
+
82
+ #elif defined(OPENSSL_SSE2)
83
+
84
+ static __m128i gcm_mul32_nohw(uint32_t a, uint32_t b) {
85
+ // One term every four bits means the largest term is 32/4 = 8, which does not
86
+ // overflow into the next term.
87
+ __m128i aa = _mm_setr_epi32(a, 0, a, 0);
88
+ __m128i bb = _mm_setr_epi32(b, 0, b, 0);
89
+
90
+ __m128i a0a0 =
91
+ _mm_and_si128(aa, _mm_setr_epi32(0x11111111, 0, 0x11111111, 0));
92
+ __m128i a2a2 =
93
+ _mm_and_si128(aa, _mm_setr_epi32(0x44444444, 0, 0x44444444, 0));
94
+ __m128i b0b1 =
95
+ _mm_and_si128(bb, _mm_setr_epi32(0x11111111, 0, 0x22222222, 0));
96
+ __m128i b2b3 =
97
+ _mm_and_si128(bb, _mm_setr_epi32(0x44444444, 0, 0x88888888, 0));
98
+
99
+ __m128i c0c1 =
100
+ _mm_xor_si128(_mm_mul_epu32(a0a0, b0b1), _mm_mul_epu32(a2a2, b2b3));
101
+ __m128i c2c3 =
102
+ _mm_xor_si128(_mm_mul_epu32(a2a2, b0b1), _mm_mul_epu32(a0a0, b2b3));
103
+
104
+ __m128i a1a1 =
105
+ _mm_and_si128(aa, _mm_setr_epi32(0x22222222, 0, 0x22222222, 0));
106
+ __m128i a3a3 =
107
+ _mm_and_si128(aa, _mm_setr_epi32(0x88888888, 0, 0x88888888, 0));
108
+ __m128i b3b0 =
109
+ _mm_and_si128(bb, _mm_setr_epi32(0x88888888, 0, 0x11111111, 0));
110
+ __m128i b1b2 =
111
+ _mm_and_si128(bb, _mm_setr_epi32(0x22222222, 0, 0x44444444, 0));
112
+
113
+ c0c1 = _mm_xor_si128(c0c1, _mm_mul_epu32(a1a1, b3b0));
114
+ c0c1 = _mm_xor_si128(c0c1, _mm_mul_epu32(a3a3, b1b2));
115
+ c2c3 = _mm_xor_si128(c2c3, _mm_mul_epu32(a3a3, b3b0));
116
+ c2c3 = _mm_xor_si128(c2c3, _mm_mul_epu32(a1a1, b1b2));
117
+
118
+ c0c1 = _mm_and_si128(
119
+ c0c1, _mm_setr_epi32(0x11111111, 0x11111111, 0x22222222, 0x22222222));
120
+ c2c3 = _mm_and_si128(
121
+ c2c3, _mm_setr_epi32(0x44444444, 0x44444444, 0x88888888, 0x88888888));
122
+
123
+ c0c1 = _mm_xor_si128(c0c1, c2c3);
124
+ // c0 ^= c1
125
+ c0c1 = _mm_xor_si128(c0c1, _mm_srli_si128(c0c1, 8));
126
+ return c0c1;
127
+ }
128
+
129
+ static void gcm_mul64_nohw(uint64_t *out_lo, uint64_t *out_hi, uint64_t a,
130
+ uint64_t b) {
131
+ uint32_t a0 = a & 0xffffffff;
132
+ uint32_t a1 = a >> 32;
133
+ uint32_t b0 = b & 0xffffffff;
134
+ uint32_t b1 = b >> 32;
135
+ // Karatsuba multiplication.
136
+ __m128i lo = gcm_mul32_nohw(a0, b0);
137
+ __m128i hi = gcm_mul32_nohw(a1, b1);
138
+ __m128i mid = gcm_mul32_nohw(a0 ^ a1, b0 ^ b1);
139
+ mid = _mm_xor_si128(mid, lo);
140
+ mid = _mm_xor_si128(mid, hi);
141
+ __m128i ret = _mm_unpacklo_epi64(lo, hi);
142
+ mid = _mm_slli_si128(mid, 4);
143
+ mid = _mm_and_si128(mid, _mm_setr_epi32(0, 0xffffffff, 0xffffffff, 0));
144
+ ret = _mm_xor_si128(ret, mid);
145
+ memcpy(out_lo, &ret, 8);
146
+ memcpy(out_hi, ((char*)&ret) + 8, 8);
147
+ }
148
+
149
+ #else // !BORINGSSL_HAS_UINT128 && !OPENSSL_SSE2
150
+
151
+ static uint64_t gcm_mul32_nohw(uint32_t a, uint32_t b) {
152
+ // One term every four bits means the largest term is 32/4 = 8, which does not
153
+ // overflow into the next term.
154
+ uint32_t a0 = a & 0x11111111;
155
+ uint32_t a1 = a & 0x22222222;
156
+ uint32_t a2 = a & 0x44444444;
157
+ uint32_t a3 = a & 0x88888888;
158
+
159
+ uint32_t b0 = b & 0x11111111;
160
+ uint32_t b1 = b & 0x22222222;
161
+ uint32_t b2 = b & 0x44444444;
162
+ uint32_t b3 = b & 0x88888888;
163
+
164
+ uint64_t c0 = (a0 * (uint64_t)b0) ^ (a1 * (uint64_t)b3) ^
165
+ (a2 * (uint64_t)b2) ^ (a3 * (uint64_t)b1);
166
+ uint64_t c1 = (a0 * (uint64_t)b1) ^ (a1 * (uint64_t)b0) ^
167
+ (a2 * (uint64_t)b3) ^ (a3 * (uint64_t)b2);
168
+ uint64_t c2 = (a0 * (uint64_t)b2) ^ (a1 * (uint64_t)b1) ^
169
+ (a2 * (uint64_t)b0) ^ (a3 * (uint64_t)b3);
170
+ uint64_t c3 = (a0 * (uint64_t)b3) ^ (a1 * (uint64_t)b2) ^
171
+ (a2 * (uint64_t)b1) ^ (a3 * (uint64_t)b0);
172
+
173
+ return (c0 & UINT64_C(0x1111111111111111)) |
174
+ (c1 & UINT64_C(0x2222222222222222)) |
175
+ (c2 & UINT64_C(0x4444444444444444)) |
176
+ (c3 & UINT64_C(0x8888888888888888));
177
+ }
178
+
179
+ static void gcm_mul64_nohw(uint64_t *out_lo, uint64_t *out_hi, uint64_t a,
180
+ uint64_t b) {
181
+ uint32_t a0 = a & 0xffffffff;
182
+ uint32_t a1 = a >> 32;
183
+ uint32_t b0 = b & 0xffffffff;
184
+ uint32_t b1 = b >> 32;
185
+ // Karatsuba multiplication.
186
+ uint64_t lo = gcm_mul32_nohw(a0, b0);
187
+ uint64_t hi = gcm_mul32_nohw(a1, b1);
188
+ uint64_t mid = gcm_mul32_nohw(a0 ^ a1, b0 ^ b1) ^ lo ^ hi;
189
+ *out_lo = lo ^ (mid << 32);
190
+ *out_hi = hi ^ (mid >> 32);
191
+ }
192
+
193
+ #endif // BORINGSSL_HAS_UINT128
194
+
195
+ void gcm_init_nohw(u128 Htable[16], const uint64_t Xi[2]) {
196
+ // We implement GHASH in terms of POLYVAL, as described in RFC8452. This
197
+ // avoids a shift by 1 in the multiplication, needed to account for bit
198
+ // reversal losing a bit after multiplication, that is,
199
+ // rev128(X) * rev128(Y) = rev255(X*Y).
200
+ //
201
+ // Per Appendix A, we run mulX_POLYVAL. Note this is the same transformation
202
+ // applied by |gcm_init_clmul|, etc. Note |Xi| has already been byteswapped.
203
+ //
204
+ // See also slide 16 of
205
+ // https://crypto.stanford.edu/RealWorldCrypto/slides/gueron.pdf
206
+ Htable[0].lo = Xi[1];
207
+ Htable[0].hi = Xi[0];
208
+
209
+ uint64_t carry = Htable[0].hi >> 63;
210
+ carry = 0u - carry;
211
+
212
+ Htable[0].hi <<= 1;
213
+ Htable[0].hi |= Htable[0].lo >> 63;
214
+ Htable[0].lo <<= 1;
215
+
216
+ // The irreducible polynomial is 1 + x^121 + x^126 + x^127 + x^128, so we
217
+ // conditionally add 0xc200...0001.
218
+ Htable[0].lo ^= carry & 1;
219
+ Htable[0].hi ^= carry & UINT64_C(0xc200000000000000);
220
+
221
+ // This implementation does not use the rest of |Htable|.
222
+ }
223
+
224
+ static void gcm_polyval_nohw(uint64_t Xi[2], const u128 *H) {
225
+ // Karatsuba multiplication. The product of |Xi| and |H| is stored in |r0|
226
+ // through |r3|. Note there is no byte or bit reversal because we are
227
+ // evaluating POLYVAL.
228
+ uint64_t r0, r1;
229
+ gcm_mul64_nohw(&r0, &r1, Xi[0], H->lo);
230
+ uint64_t r2, r3;
231
+ gcm_mul64_nohw(&r2, &r3, Xi[1], H->hi);
232
+ uint64_t mid0, mid1;
233
+ gcm_mul64_nohw(&mid0, &mid1, Xi[0] ^ Xi[1], H->hi ^ H->lo);
234
+ mid0 ^= r0 ^ r2;
235
+ mid1 ^= r1 ^ r3;
236
+ r2 ^= mid1;
237
+ r1 ^= mid0;
238
+
239
+ // Now we multiply our 256-bit result by x^-128 and reduce. |r2| and
240
+ // |r3| shifts into position and we must multiply |r0| and |r1| by x^-128. We
241
+ // have:
242
+ //
243
+ // 1 = x^121 + x^126 + x^127 + x^128
244
+ // x^-128 = x^-7 + x^-2 + x^-1 + 1
245
+ //
246
+ // This is the GHASH reduction step, but with bits flowing in reverse.
247
+
248
+ // The x^-7, x^-2, and x^-1 terms shift bits past x^0, which would require
249
+ // another reduction steps. Instead, we gather the excess bits, incorporate
250
+ // them into |r0| and |r1| and reduce once. See slides 17-19
251
+ // of https://crypto.stanford.edu/RealWorldCrypto/slides/gueron.pdf.
252
+ r1 ^= (r0 << 63) ^ (r0 << 62) ^ (r0 << 57);
253
+
254
+ // 1
255
+ r2 ^= r0;
256
+ r3 ^= r1;
257
+
258
+ // x^-1
259
+ r2 ^= r0 >> 1;
260
+ r2 ^= r1 << 63;
261
+ r3 ^= r1 >> 1;
262
+
263
+ // x^-2
264
+ r2 ^= r0 >> 2;
265
+ r2 ^= r1 << 62;
266
+ r3 ^= r1 >> 2;
267
+
268
+ // x^-7
269
+ r2 ^= r0 >> 7;
270
+ r2 ^= r1 << 57;
271
+ r3 ^= r1 >> 7;
272
+
273
+ Xi[0] = r2;
274
+ Xi[1] = r3;
275
+ }
276
+
277
+ void gcm_gmult_nohw(uint64_t Xi[2], const u128 Htable[16]) {
278
+ uint64_t swapped[2];
279
+ swapped[0] = CRYPTO_bswap8(Xi[1]);
280
+ swapped[1] = CRYPTO_bswap8(Xi[0]);
281
+ gcm_polyval_nohw(swapped, &Htable[0]);
282
+ Xi[0] = CRYPTO_bswap8(swapped[1]);
283
+ Xi[1] = CRYPTO_bswap8(swapped[0]);
284
+ }
285
+
286
+ void gcm_ghash_nohw(uint64_t Xi[2], const u128 Htable[16], const uint8_t *inp,
287
+ size_t len) {
288
+ uint64_t swapped[2];
289
+ swapped[0] = CRYPTO_bswap8(Xi[1]);
290
+ swapped[1] = CRYPTO_bswap8(Xi[0]);
291
+
292
+ while (len >= 16) {
293
+ uint64_t block[2];
294
+ OPENSSL_memcpy(block, inp, 16);
295
+ swapped[0] ^= CRYPTO_bswap8(block[1]);
296
+ swapped[1] ^= CRYPTO_bswap8(block[0]);
297
+ gcm_polyval_nohw(swapped, &Htable[0]);
298
+ inp += 16;
299
+ len -= 16;
300
+ }
301
+
302
+ Xi[0] = CRYPTO_bswap8(swapped[1]);
303
+ Xi[1] = CRYPTO_bswap8(swapped[0]);
304
+ }
@@ -261,22 +261,15 @@ OPENSSL_EXPORT void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, uint8_t *tag,
261
261
 
262
262
  // GCM assembly.
263
263
 
264
- #if !defined(OPENSSL_NO_ASM) && \
265
- (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \
266
- defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64) || \
267
- defined(OPENSSL_PPC64LE))
268
- #define GHASH_ASM
269
- #endif
270
-
271
- void gcm_init_4bit(u128 Htable[16], const uint64_t H[2]);
272
- void gcm_gmult_4bit(uint64_t Xi[2], const u128 Htable[16]);
273
- void gcm_ghash_4bit(uint64_t Xi[2], const u128 Htable[16], const uint8_t *inp,
264
+ void gcm_init_nohw(u128 Htable[16], const uint64_t H[2]);
265
+ void gcm_gmult_nohw(uint64_t Xi[2], const u128 Htable[16]);
266
+ void gcm_ghash_nohw(uint64_t Xi[2], const u128 Htable[16], const uint8_t *inp,
274
267
  size_t len);
275
268
 
276
- #if defined(GHASH_ASM)
269
+ #if !defined(OPENSSL_NO_ASM)
277
270
 
278
271
  #if defined(OPENSSL_X86) || defined(OPENSSL_X86_64)
279
- #define GCM_FUNCREF_4BIT
272
+ #define GCM_FUNCREF
280
273
  void gcm_init_clmul(u128 Htable[16], const uint64_t Xi[2]);
281
274
  void gcm_gmult_clmul(uint64_t Xi[2], const u128 Htable[16]);
282
275
  void gcm_ghash_clmul(uint64_t Xi[2], const u128 Htable[16], const uint8_t *inp,
@@ -309,14 +302,11 @@ size_t aesni_gcm_decrypt(const uint8_t *in, uint8_t *out, size_t len,
309
302
 
310
303
  #if defined(OPENSSL_X86)
311
304
  #define GHASH_ASM_X86
312
- void gcm_gmult_4bit_mmx(uint64_t Xi[2], const u128 Htable[16]);
313
- void gcm_ghash_4bit_mmx(uint64_t Xi[2], const u128 Htable[16], const uint8_t *inp,
314
- size_t len);
315
305
  #endif // OPENSSL_X86
316
306
 
317
307
  #elif defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)
318
308
  #define GHASH_ASM_ARM
319
- #define GCM_FUNCREF_4BIT
309
+ #define GCM_FUNCREF
320
310
 
321
311
  OPENSSL_INLINE int gcm_pmull_capable(void) {
322
312
  return CRYPTO_is_ARMv8_PMULL_capable();
@@ -336,13 +326,13 @@ void gcm_ghash_neon(uint64_t Xi[2], const u128 Htable[16], const uint8_t *inp,
336
326
 
337
327
  #elif defined(OPENSSL_PPC64LE)
338
328
  #define GHASH_ASM_PPC64LE
339
- #define GCM_FUNCREF_4BIT
329
+ #define GCM_FUNCREF
340
330
  void gcm_init_p8(u128 Htable[16], const uint64_t Xi[2]);
341
331
  void gcm_gmult_p8(uint64_t Xi[2], const u128 Htable[16]);
342
332
  void gcm_ghash_p8(uint64_t Xi[2], const u128 Htable[16], const uint8_t *inp,
343
333
  size_t len);
344
334
  #endif
345
- #endif // GHASH_ASM
335
+ #endif // OPENSSL_NO_ASM
346
336
 
347
337
 
348
338
  // CBC.
@@ -809,6 +809,11 @@ int RSA_check_fips(RSA *key) {
809
809
  int ret = 1;
810
810
 
811
811
  // Perform partial public key validation of RSA keys (SP 800-89 5.3.3).
812
+ // Although this is not for primality testing, SP 800-89 cites an RSA
813
+ // primality testing algorithm, so we use |BN_prime_checks_for_generation| to
814
+ // match. This is only a plausibility test and we expect the value to be
815
+ // composite, so too few iterations will cause us to reject the key, not use
816
+ // an implausible one.
812
817
  enum bn_primality_result_t primality_result;
813
818
  if (BN_num_bits(key->e) <= 16 ||
814
819
  BN_num_bits(key->e) > 256 ||
@@ -817,7 +822,8 @@ int RSA_check_fips(RSA *key) {
817
822
  !BN_gcd(&small_gcd, key->n, g_small_factors(), ctx) ||
818
823
  !BN_is_one(&small_gcd) ||
819
824
  !BN_enhanced_miller_rabin_primality_test(&primality_result, key->n,
820
- BN_prime_checks, ctx, NULL) ||
825
+ BN_prime_checks_for_generation,
826
+ ctx, NULL) ||
821
827
  primality_result != bn_non_prime_power_composite) {
822
828
  OPENSSL_PUT_ERROR(RSA, RSA_R_PUBLIC_KEY_VALIDATION_FAILED);
823
829
  ret = 0;
@@ -345,7 +345,12 @@ err:
345
345
  // MAX_BLINDINGS_PER_RSA defines the maximum number of cached BN_BLINDINGs per
346
346
  // RSA*. Then this limit is exceeded, BN_BLINDING objects will be created and
347
347
  // destroyed as needed.
348
+ #if defined(OPNESSL_TSAN)
349
+ // Smaller under TSAN so that the edge case can be hit with fewer threads.
350
+ #define MAX_BLINDINGS_PER_RSA 2
351
+ #else
348
352
  #define MAX_BLINDINGS_PER_RSA 1024
353
+ #endif
349
354
 
350
355
  // rsa_blinding_get returns a BN_BLINDING to use with |rsa|. It does this by
351
356
  // allocating one of the cached BN_BLINDING objects in |rsa->blindings|. If
@@ -360,80 +365,84 @@ static BN_BLINDING *rsa_blinding_get(RSA *rsa, unsigned *index_used,
360
365
  assert(rsa->mont_n != NULL);
361
366
 
362
367
  BN_BLINDING *ret = NULL;
363
- BN_BLINDING **new_blindings;
364
- uint8_t *new_blindings_inuse;
365
- char overflow = 0;
366
-
367
368
  CRYPTO_MUTEX_lock_write(&rsa->lock);
368
369
 
369
- unsigned i;
370
- for (i = 0; i < rsa->num_blindings; i++) {
371
- if (rsa->blindings_inuse[i] == 0) {
372
- rsa->blindings_inuse[i] = 1;
373
- ret = rsa->blindings[i];
374
- *index_used = i;
375
- break;
376
- }
370
+ uint8_t *const free_inuse_flag =
371
+ OPENSSL_memchr(rsa->blindings_inuse, 0, rsa->num_blindings);
372
+ if (free_inuse_flag != NULL) {
373
+ *free_inuse_flag = 1;
374
+ *index_used = free_inuse_flag - rsa->blindings_inuse;
375
+ ret = rsa->blindings[*index_used];
376
+ goto out;
377
377
  }
378
378
 
379
- if (ret != NULL) {
380
- CRYPTO_MUTEX_unlock_write(&rsa->lock);
381
- return ret;
379
+ if (rsa->num_blindings >= MAX_BLINDINGS_PER_RSA) {
380
+ // No |BN_BLINDING| is free and nor can the cache be extended. This index
381
+ // value is magic and indicates to |rsa_blinding_release| that a
382
+ // |BN_BLINDING| was not inserted into the array.
383
+ *index_used = MAX_BLINDINGS_PER_RSA;
384
+ ret = BN_BLINDING_new();
385
+ goto out;
382
386
  }
383
387
 
384
- overflow = rsa->num_blindings >= MAX_BLINDINGS_PER_RSA;
385
-
386
- // We didn't find a free BN_BLINDING to use so increase the length of
387
- // the arrays by one and use the newly created element.
388
-
389
- CRYPTO_MUTEX_unlock_write(&rsa->lock);
390
- ret = BN_BLINDING_new();
391
- if (ret == NULL) {
392
- return NULL;
388
+ // Double the length of the cache.
389
+ OPENSSL_STATIC_ASSERT(MAX_BLINDINGS_PER_RSA < UINT_MAX / 2,
390
+ "MAX_BLINDINGS_PER_RSA too large");
391
+ unsigned new_num_blindings = rsa->num_blindings * 2;
392
+ if (new_num_blindings == 0) {
393
+ new_num_blindings = 1;
393
394
  }
394
-
395
- if (overflow) {
396
- // We cannot add any more cached BN_BLINDINGs so we use |ret|
397
- // and mark it for destruction in |rsa_blinding_release|.
398
- *index_used = MAX_BLINDINGS_PER_RSA;
399
- return ret;
395
+ if (new_num_blindings > MAX_BLINDINGS_PER_RSA) {
396
+ new_num_blindings = MAX_BLINDINGS_PER_RSA;
400
397
  }
398
+ assert(new_num_blindings > rsa->num_blindings);
401
399
 
402
- CRYPTO_MUTEX_lock_write(&rsa->lock);
403
-
404
- new_blindings =
405
- OPENSSL_malloc(sizeof(BN_BLINDING *) * (rsa->num_blindings + 1));
406
- if (new_blindings == NULL) {
407
- goto err1;
400
+ OPENSSL_STATIC_ASSERT(
401
+ MAX_BLINDINGS_PER_RSA < UINT_MAX / sizeof(BN_BLINDING *),
402
+ "MAX_BLINDINGS_PER_RSA too large");
403
+ BN_BLINDING **new_blindings =
404
+ OPENSSL_malloc(sizeof(BN_BLINDING *) * new_num_blindings);
405
+ uint8_t *new_blindings_inuse = OPENSSL_malloc(new_num_blindings);
406
+ if (new_blindings == NULL || new_blindings_inuse == NULL) {
407
+ goto err;
408
408
  }
409
+
409
410
  OPENSSL_memcpy(new_blindings, rsa->blindings,
410
- sizeof(BN_BLINDING *) * rsa->num_blindings);
411
- new_blindings[rsa->num_blindings] = ret;
411
+ sizeof(BN_BLINDING *) * rsa->num_blindings);
412
+ OPENSSL_memcpy(new_blindings_inuse, rsa->blindings_inuse, rsa->num_blindings);
412
413
 
413
- new_blindings_inuse = OPENSSL_malloc(rsa->num_blindings + 1);
414
- if (new_blindings_inuse == NULL) {
415
- goto err2;
414
+ for (unsigned i = rsa->num_blindings; i < new_num_blindings; i++) {
415
+ new_blindings[i] = BN_BLINDING_new();
416
+ if (new_blindings[i] == NULL) {
417
+ for (unsigned j = rsa->num_blindings; j < i; j++) {
418
+ BN_BLINDING_free(new_blindings[j]);
419
+ }
420
+ goto err;
421
+ }
416
422
  }
417
- OPENSSL_memcpy(new_blindings_inuse, rsa->blindings_inuse, rsa->num_blindings);
423
+ memset(&new_blindings_inuse[rsa->num_blindings], 0,
424
+ new_num_blindings - rsa->num_blindings);
425
+
418
426
  new_blindings_inuse[rsa->num_blindings] = 1;
419
427
  *index_used = rsa->num_blindings;
428
+ assert(*index_used != MAX_BLINDINGS_PER_RSA);
429
+ ret = new_blindings[rsa->num_blindings];
420
430
 
421
431
  OPENSSL_free(rsa->blindings);
422
432
  rsa->blindings = new_blindings;
423
433
  OPENSSL_free(rsa->blindings_inuse);
424
434
  rsa->blindings_inuse = new_blindings_inuse;
425
- rsa->num_blindings++;
435
+ rsa->num_blindings = new_num_blindings;
426
436
 
427
- CRYPTO_MUTEX_unlock_write(&rsa->lock);
428
- return ret;
437
+ goto out;
429
438
 
430
- err2:
439
+ err:
440
+ OPENSSL_free(new_blindings_inuse);
431
441
  OPENSSL_free(new_blindings);
432
442
 
433
- err1:
443
+ out:
434
444
  CRYPTO_MUTEX_unlock_write(&rsa->lock);
435
- BN_BLINDING_free(ret);
436
- return NULL;
445
+ return ret;
437
446
  }
438
447
 
439
448
  // rsa_blinding_release marks the cached BN_BLINDING at the given index as free
@@ -1046,8 +1055,8 @@ static int generate_prime(BIGNUM *out, int bits, const BIGNUM *e,
1046
1055
  if (relatively_prime) {
1047
1056
  // Test |out| for primality (steps 4.5.1 and 5.6.1).
1048
1057
  int is_probable_prime;
1049
- if (!BN_primality_test(&is_probable_prime, out, BN_prime_checks, ctx, 0,
1050
- cb)) {
1058
+ if (!BN_primality_test(&is_probable_prime, out,
1059
+ BN_prime_checks_for_generation, ctx, 0, cb)) {
1051
1060
  goto err;
1052
1061
  }
1053
1062
  if (is_probable_prime) {