grpc 1.53.1 → 1.54.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 (689) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +78 -66
  3. data/include/grpc/event_engine/event_engine.h +30 -14
  4. data/include/grpc/grpc_security.h +4 -0
  5. data/include/grpc/support/port_platform.h +4 -4
  6. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -0
  7. data/src/core/ext/filters/client_channel/backend_metric.cc +6 -0
  8. data/src/core/ext/filters/client_channel/backup_poller.cc +2 -11
  9. data/src/core/ext/filters/client_channel/backup_poller.h +0 -3
  10. data/src/core/ext/filters/client_channel/client_channel.cc +848 -813
  11. data/src/core/ext/filters/client_channel/client_channel.h +131 -173
  12. data/src/core/ext/filters/client_channel/client_channel_internal.h +114 -0
  13. data/src/core/ext/filters/client_channel/config_selector.h +4 -3
  14. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +6 -1
  15. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +17 -18
  16. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +134 -151
  17. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2 -16
  18. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +14 -10
  19. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +68 -30
  20. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -3
  21. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -1
  22. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -5
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +2 -2
  24. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +30 -38
  25. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +4 -4
  26. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +20 -26
  27. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -179
  28. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -2
  29. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -2
  30. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
  31. data/src/core/ext/filters/client_channel/retry_filter.cc +95 -102
  32. data/src/core/ext/filters/client_channel/subchannel.cc +2 -4
  33. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +26 -27
  34. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +8 -5
  35. data/src/core/ext/filters/http/client/http_client_filter.cc +3 -3
  36. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -12
  37. data/src/core/ext/filters/http/message_compress/compression_filter.cc +27 -11
  38. data/src/core/ext/filters/message_size/message_size_filter.cc +141 -224
  39. data/src/core/ext/filters/message_size/message_size_filter.h +48 -3
  40. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -6
  41. data/src/core/ext/gcp/metadata_query.cc +142 -0
  42. data/src/core/ext/gcp/metadata_query.h +82 -0
  43. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +70 -55
  44. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +8 -12
  45. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -5
  46. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +116 -58
  47. data/src/core/ext/transport/chttp2/transport/flow_control.cc +5 -2
  48. data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -1
  49. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
  50. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +222 -118
  51. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +113 -295
  52. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -2
  53. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +0 -2
  54. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +277 -451
  55. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
  56. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -14
  57. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +1 -9
  58. data/src/core/ext/transport/chttp2/transport/internal.h +16 -3
  59. data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
  60. data/src/core/ext/transport/chttp2/transport/writing.cc +10 -5
  61. data/src/core/ext/transport/inproc/inproc_transport.cc +20 -14
  62. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +5 -3
  63. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +22 -0
  64. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +5 -3
  65. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +22 -0
  66. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +23 -5
  67. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +94 -3
  68. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -2
  69. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -0
  70. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +6 -3
  71. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
  72. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +24 -6
  73. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +111 -12
  74. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +9 -7
  75. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +27 -9
  76. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +0 -1
  77. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +11 -7
  78. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +56 -12
  79. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +5 -3
  80. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +24 -0
  81. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +5 -3
  82. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
  83. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +13 -2
  84. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +49 -0
  85. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +24 -9
  86. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +66 -12
  87. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
  88. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +139 -136
  89. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +31 -15
  90. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -0
  91. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +12 -9
  92. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +15 -0
  93. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +54 -45
  94. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +135 -119
  95. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
  96. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +100 -97
  97. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +15 -18
  98. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +272 -264
  99. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +117 -117
  100. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +5 -5
  101. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +5 -5
  102. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +5 -5
  103. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +12 -9
  104. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -0
  105. data/src/core/ext/xds/xds_channel_stack_modifier.cc +1 -2
  106. data/src/core/ext/xds/xds_client_stats.cc +29 -15
  107. data/src/core/ext/xds/xds_client_stats.h +24 -20
  108. data/src/core/ext/xds/xds_endpoint.cc +5 -2
  109. data/src/core/ext/xds/xds_endpoint.h +9 -1
  110. data/src/core/ext/xds/xds_http_rbac_filter.cc +1 -1
  111. data/src/core/ext/xds/xds_lb_policy_registry.cc +13 -0
  112. data/src/core/ext/xds/xds_transport_grpc.cc +1 -1
  113. data/src/core/lib/channel/call_finalization.h +1 -1
  114. data/src/core/lib/channel/call_tracer.cc +51 -0
  115. data/src/core/lib/channel/call_tracer.h +101 -38
  116. data/src/core/lib/channel/connected_channel.cc +483 -1050
  117. data/src/core/lib/channel/context.h +8 -1
  118. data/src/core/lib/channel/promise_based_filter.cc +106 -42
  119. data/src/core/lib/channel/promise_based_filter.h +27 -13
  120. data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
  121. data/src/core/lib/config/config_vars.cc +151 -0
  122. data/src/core/lib/config/config_vars.h +127 -0
  123. data/src/core/lib/config/config_vars_non_generated.cc +51 -0
  124. data/src/core/lib/config/load_config.cc +66 -0
  125. data/src/core/lib/config/load_config.h +49 -0
  126. data/src/core/lib/debug/trace.cc +5 -6
  127. data/src/core/lib/debug/trace.h +0 -5
  128. data/src/core/lib/event_engine/event_engine.cc +37 -2
  129. data/src/core/lib/event_engine/handle_containers.h +7 -22
  130. data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
  131. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +0 -4
  132. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -9
  133. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +48 -15
  134. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +8 -8
  135. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -5
  136. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +6 -3
  137. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +27 -18
  138. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +0 -3
  139. data/src/core/lib/event_engine/resolved_address.cc +2 -1
  140. data/src/core/lib/event_engine/windows/win_socket.cc +0 -1
  141. data/src/core/lib/event_engine/windows/windows_endpoint.cc +129 -82
  142. data/src/core/lib/event_engine/windows/windows_endpoint.h +21 -5
  143. data/src/core/lib/event_engine/windows/windows_engine.cc +39 -18
  144. data/src/core/lib/event_engine/windows/windows_engine.h +2 -1
  145. data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
  146. data/src/core/lib/event_engine/windows/windows_listener.h +155 -0
  147. data/src/core/lib/experiments/config.cc +3 -10
  148. data/src/core/lib/experiments/experiments.cc +7 -0
  149. data/src/core/lib/experiments/experiments.h +9 -1
  150. data/src/core/lib/gpr/log.cc +15 -28
  151. data/src/core/lib/gprpp/fork.cc +8 -14
  152. data/src/core/lib/gprpp/orphanable.h +4 -3
  153. data/src/core/lib/gprpp/per_cpu.h +9 -3
  154. data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +49 -37
  155. data/src/core/lib/gprpp/ref_counted.h +33 -34
  156. data/src/core/lib/gprpp/thd.h +16 -0
  157. data/src/core/lib/gprpp/time.cc +1 -0
  158. data/src/core/lib/gprpp/time.h +4 -4
  159. data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +2 -2
  160. data/src/core/lib/iomgr/call_combiner.h +2 -2
  161. data/src/core/lib/iomgr/endpoint_cfstream.cc +4 -2
  162. data/src/core/lib/iomgr/ev_posix.cc +13 -53
  163. data/src/core/lib/iomgr/ev_posix.h +0 -3
  164. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +103 -76
  165. data/src/core/lib/iomgr/iomgr.cc +4 -8
  166. data/src/core/lib/iomgr/iomgr_windows.cc +8 -2
  167. data/src/core/lib/iomgr/pollset_set_windows.cc +9 -9
  168. data/src/core/lib/iomgr/pollset_windows.cc +1 -1
  169. data/src/core/lib/iomgr/socket_utils_common_posix.cc +16 -3
  170. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -2
  171. data/src/core/lib/iomgr/tcp_posix.cc +0 -1
  172. data/src/core/lib/iomgr/tcp_server_posix.cc +5 -16
  173. data/src/core/lib/iomgr/tcp_server_windows.cc +176 -9
  174. data/src/core/lib/iomgr/tcp_windows.cc +12 -8
  175. data/src/core/lib/load_balancing/lb_policy.cc +9 -13
  176. data/src/core/lib/load_balancing/lb_policy.h +4 -2
  177. data/src/core/lib/promise/activity.cc +22 -6
  178. data/src/core/lib/promise/activity.h +61 -24
  179. data/src/core/lib/promise/cancel_callback.h +77 -0
  180. data/src/core/lib/promise/detail/basic_seq.h +1 -1
  181. data/src/core/lib/promise/detail/promise_factory.h +4 -0
  182. data/src/core/lib/promise/for_each.h +176 -0
  183. data/src/core/lib/promise/if.h +9 -0
  184. data/src/core/lib/promise/interceptor_list.h +23 -2
  185. data/src/core/lib/promise/latch.h +89 -3
  186. data/src/core/lib/promise/loop.h +13 -9
  187. data/src/core/lib/promise/map.h +7 -0
  188. data/src/core/lib/promise/party.cc +286 -0
  189. data/src/core/lib/promise/party.h +499 -0
  190. data/src/core/lib/promise/pipe.h +197 -57
  191. data/src/core/lib/promise/poll.h +48 -0
  192. data/src/core/lib/promise/promise.h +2 -2
  193. data/src/core/lib/resource_quota/arena.cc +19 -3
  194. data/src/core/lib/resource_quota/arena.h +119 -5
  195. data/src/core/lib/resource_quota/memory_quota.cc +1 -1
  196. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +12 -35
  197. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
  198. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +0 -59
  199. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -5
  200. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
  201. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -0
  202. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +2 -0
  203. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +5 -9
  204. data/src/core/lib/security/security_connector/ssl_utils.cc +11 -25
  205. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +12 -0
  206. data/src/core/lib/security/transport/secure_endpoint.cc +4 -2
  207. data/src/core/lib/security/transport/server_auth_filter.cc +20 -2
  208. data/src/core/lib/slice/slice.cc +1 -1
  209. data/src/core/lib/surface/builtins.cc +2 -0
  210. data/src/core/lib/surface/call.cc +926 -1024
  211. data/src/core/lib/surface/call.h +10 -0
  212. data/src/core/lib/surface/lame_client.cc +1 -0
  213. data/src/core/lib/surface/validate_metadata.cc +42 -43
  214. data/src/core/lib/surface/validate_metadata.h +0 -9
  215. data/src/core/lib/surface/version.cc +2 -2
  216. data/src/core/lib/transport/batch_builder.cc +179 -0
  217. data/src/core/lib/transport/batch_builder.h +468 -0
  218. data/src/core/lib/transport/bdp_estimator.cc +7 -7
  219. data/src/core/lib/transport/bdp_estimator.h +10 -6
  220. data/src/core/lib/transport/custom_metadata.h +30 -0
  221. data/src/core/lib/transport/metadata_batch.cc +5 -2
  222. data/src/core/lib/transport/metadata_batch.h +17 -113
  223. data/src/core/lib/transport/parsed_metadata.h +6 -16
  224. data/src/core/lib/transport/timeout_encoding.cc +6 -1
  225. data/src/core/lib/transport/transport.cc +30 -2
  226. data/src/core/lib/transport/transport.h +70 -14
  227. data/src/core/lib/transport/transport_impl.h +7 -0
  228. data/src/core/lib/transport/transport_op_string.cc +52 -42
  229. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -2
  230. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +1 -0
  231. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +21 -4
  232. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +5 -0
  233. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  234. data/src/core/tsi/ssl_transport_security.cc +4 -2
  235. data/src/ruby/lib/grpc/version.rb +1 -1
  236. data/third_party/abseil-cpp/absl/base/config.h +1 -1
  237. data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
  238. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
  239. data/third_party/abseil-cpp/absl/flags/config.h +68 -0
  240. data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
  241. data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
  242. data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
  243. data/{src/core/lib/gprpp/global_config_custom.h → third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc} +11 -14
  244. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
  245. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
  246. data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
  247. data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
  248. data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
  249. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
  250. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
  251. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
  252. data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
  253. data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
  254. data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
  255. data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
  256. data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
  257. data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
  258. data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
  259. data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
  260. data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
  261. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +12 -8
  262. data/third_party/boringssl-with-bazel/err_data.c +728 -712
  263. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
  264. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
  265. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
  266. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
  267. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
  268. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
  269. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
  270. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +174 -194
  271. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
  272. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
  273. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
  274. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
  275. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
  276. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
  277. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
  278. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
  279. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
  280. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
  281. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
  282. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
  283. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +133 -88
  284. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
  285. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +791 -791
  286. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +526 -526
  287. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
  288. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
  289. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
  290. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
  291. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
  292. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +11 -7
  293. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +4 -4
  294. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
  295. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +4 -4
  296. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +17 -10
  297. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -3
  298. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
  299. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
  300. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
  301. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +9 -5
  302. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
  303. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
  304. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
  305. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
  306. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
  307. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
  308. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
  309. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
  310. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
  311. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
  312. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
  313. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
  314. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
  315. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
  316. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
  317. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
  318. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +6 -12
  319. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -11
  320. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
  321. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
  322. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
  323. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
  324. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
  325. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
  326. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
  327. data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
  328. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
  329. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
  330. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
  331. data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
  332. data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
  333. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
  334. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +16 -27
  335. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
  336. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
  337. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
  338. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
  339. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
  340. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
  341. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +39 -16
  342. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
  343. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
  344. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
  345. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +214 -99
  346. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +21 -5
  347. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
  348. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
  349. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
  350. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
  351. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
  352. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
  353. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
  354. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
  355. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
  356. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
  357. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
  358. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
  359. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +5 -5
  360. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
  361. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
  362. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
  363. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
  364. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
  365. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
  366. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
  367. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
  368. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
  369. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
  370. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
  371. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
  372. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +35 -27
  373. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
  374. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
  375. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
  376. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
  377. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
  378. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
  379. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
  380. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
  381. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
  382. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
  383. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
  384. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
  385. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
  386. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
  387. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
  388. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
  389. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
  390. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
  391. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
  392. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
  393. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
  394. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
  395. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
  396. data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
  397. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
  398. data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
  399. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
  400. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +21 -6
  401. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
  402. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
  403. data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
  404. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +25 -25
  405. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +91 -17
  406. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +5 -5
  407. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +34 -12
  408. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +54 -23
  409. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +44 -60
  410. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
  411. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +60 -53
  412. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
  413. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +48 -36
  414. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
  415. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +2 -7
  416. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -3
  417. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -1
  418. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +8 -0
  419. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +42 -14
  420. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
  421. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
  422. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -15
  423. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
  424. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +2 -4
  425. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +71 -43
  426. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +14 -16
  427. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -4
  428. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
  429. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
  430. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
  431. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
  432. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
  433. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
  434. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -45
  435. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
  436. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +22 -0
  437. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +63 -52
  438. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +107 -62
  439. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +58 -31
  440. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
  441. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +523 -422
  442. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
  443. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
  444. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
  445. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
  446. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
  447. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
  448. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +19 -6
  449. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +32 -14
  450. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
  451. data/third_party/boringssl-with-bazel/src/crypto/internal.h +373 -18
  452. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +61 -0
  453. data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +205 -0
  454. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
  455. data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
  456. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
  457. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +13 -1
  458. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
  459. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
  460. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +629 -613
  461. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
  462. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
  463. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
  464. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
  465. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
  466. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
  467. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
  468. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
  469. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
  470. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
  471. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
  472. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
  473. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
  474. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
  475. data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
  476. data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +3 -4
  477. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
  478. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
  479. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
  480. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
  481. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +66 -34
  482. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +190 -77
  483. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +81 -284
  484. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +109 -42
  485. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
  486. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +54 -55
  487. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
  488. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
  489. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
  490. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +284 -331
  491. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
  492. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
  493. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +67 -50
  494. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +153 -150
  495. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +786 -0
  496. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
  497. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
  498. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
  499. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +227 -252
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
  501. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
  502. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +230 -224
  503. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
  504. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
  505. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
  506. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
  507. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +534 -618
  508. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
  509. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +116 -182
  510. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
  511. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +181 -202
  512. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
  513. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
  514. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1865 -2050
  515. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +433 -462
  516. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
  517. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +267 -263
  518. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
  519. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
  520. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
  521. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
  522. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
  523. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +326 -415
  524. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
  525. data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
  526. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
  527. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
  528. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
  529. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
  530. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
  531. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
  532. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
  533. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
  534. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
  535. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
  536. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +78 -170
  537. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
  538. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
  539. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
  540. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
  541. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
  542. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +309 -346
  543. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +341 -365
  544. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
  545. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
  546. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
  547. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
  548. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
  549. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +122 -125
  550. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
  551. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +247 -253
  552. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
  553. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
  554. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
  555. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
  556. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +143 -136
  557. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +664 -707
  558. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +83 -75
  559. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1062 -1146
  560. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +8 -4
  561. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
  562. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +211 -187
  563. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
  564. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -14
  565. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +21 -2
  566. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
  567. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
  568. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
  569. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
  570. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
  571. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
  572. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
  573. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
  574. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
  575. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
  576. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
  577. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
  578. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
  579. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
  580. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +22 -30
  581. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
  582. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
  583. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +41 -16
  584. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
  585. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
  586. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +13 -0
  587. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
  588. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -15
  589. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
  590. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
  591. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +7 -4
  592. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
  593. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +13 -21
  594. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +139 -75
  595. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
  596. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +384 -286
  597. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +5 -6
  598. data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
  599. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +18 -7
  600. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +49 -23
  601. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
  602. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1592 -1074
  603. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +202 -205
  604. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
  605. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
  606. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
  607. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
  608. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
  609. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +34 -20
  610. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +65 -34
  611. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
  612. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
  613. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +32 -28
  614. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
  615. data/third_party/boringssl-with-bazel/src/ssl/internal.h +130 -98
  616. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +27 -11
  617. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
  618. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
  619. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
  620. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +39 -65
  621. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
  622. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
  623. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +30 -33
  624. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +77 -100
  625. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +120 -107
  626. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +164 -30
  627. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +150 -60
  628. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +22 -11
  629. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
  630. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
  631. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +5 -43
  632. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
  633. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +2 -2
  634. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +22 -34
  635. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
  636. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
  637. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
  638. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
  639. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
  640. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
  641. metadata +103 -70
  642. data/src/core/ext/filters/client_channel/lb_call_state_internal.h +0 -39
  643. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +0 -30
  644. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +0 -29
  645. data/src/core/lib/gprpp/global_config.h +0 -93
  646. data/src/core/lib/gprpp/global_config_env.cc +0 -140
  647. data/src/core/lib/gprpp/global_config_env.h +0 -133
  648. data/src/core/lib/gprpp/global_config_generic.h +0 -40
  649. data/src/core/lib/promise/intra_activity_waiter.h +0 -55
  650. data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
  651. data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -29
  652. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
  653. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +0 -83
  654. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
  655. data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
  656. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
  657. data/third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c +0 -38
  658. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
  659. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
  660. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
  661. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
  662. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
  663. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
  664. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
  665. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
  666. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
  667. /data/src/core/lib/gpr/{log_android.cc → android/log.cc} +0 -0
  668. /data/src/core/lib/gpr/{cpu_iphone.cc → iphone/cpu.cc} +0 -0
  669. /data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +0 -0
  670. /data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +0 -0
  671. /data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +0 -0
  672. /data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +0 -0
  673. /data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +0 -0
  674. /data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +0 -0
  675. /data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +0 -0
  676. /data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +0 -0
  677. /data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +0 -0
  678. /data/src/core/lib/gpr/{cpu_windows.cc → windows/cpu.cc} +0 -0
  679. /data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +0 -0
  680. /data/src/core/lib/gpr/{string_windows.cc → windows/string.cc} +0 -0
  681. /data/src/core/lib/gpr/{string_util_windows.cc → windows/string_util.cc} +0 -0
  682. /data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +0 -0
  683. /data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +0 -0
  684. /data/src/core/lib/gpr/{tmpfile_windows.cc → windows/tmpfile.cc} +0 -0
  685. /data/src/core/lib/gprpp/{env_linux.cc → linux/env.cc} +0 -0
  686. /data/src/core/lib/gprpp/{env_posix.cc → posix/env.cc} +0 -0
  687. /data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +0 -0
  688. /data/src/core/lib/gprpp/{env_windows.cc → windows/env.cc} +0 -0
  689. /data/src/core/lib/gprpp/{stat_windows.cc → windows/stat.cc} +0 -0
@@ -22,7 +22,6 @@
22
22
  #include <openssl/ec.h>
23
23
  #include <openssl/err.h>
24
24
  #include <openssl/mem.h>
25
- #include <openssl/type_check.h>
26
25
 
27
26
  #include <assert.h>
28
27
  #include <string.h>
@@ -31,8 +30,6 @@
31
30
  #include "../delocate.h"
32
31
  #include "./internal.h"
33
32
 
34
-
35
- // MSVC does not implement uint128_t, and crashes with intrinsics
36
33
  #if defined(BORINGSSL_HAS_UINT128)
37
34
  #define BORINGSSL_NISTP256_64BIT 1
38
35
  #include "../../../third_party/fiat/p256_64.h"
@@ -79,17 +76,22 @@ static void fiat_p256_cmovznz(fiat_p256_limb_t out[FIAT_P256_NLIMBS],
79
76
  fiat_p256_selectznz(out, !!t, z, nz);
80
77
  }
81
78
 
79
+ static void fiat_p256_from_words(fiat_p256_felem out,
80
+ const BN_ULONG in[32 / sizeof(BN_ULONG)]) {
81
+ // Typically, |BN_ULONG| and |fiat_p256_limb_t| will be the same type, but on
82
+ // 64-bit platforms without |uint128_t|, they are different. However, on
83
+ // little-endian systems, |uint64_t[4]| and |uint32_t[8]| have the same
84
+ // layout.
85
+ OPENSSL_memcpy(out, in, 32);
86
+ }
87
+
82
88
  static void fiat_p256_from_generic(fiat_p256_felem out, const EC_FELEM *in) {
83
- fiat_p256_from_bytes(out, in->bytes);
89
+ fiat_p256_from_words(out, in->words);
84
90
  }
85
91
 
86
92
  static void fiat_p256_to_generic(EC_FELEM *out, const fiat_p256_felem in) {
87
- // This works because 256 is a multiple of 64, so there are no excess bytes to
88
- // zero when rounding up to |BN_ULONG|s.
89
- OPENSSL_STATIC_ASSERT(
90
- 256 / 8 == sizeof(BN_ULONG) * ((256 + BN_BITS2 - 1) / BN_BITS2),
91
- "fiat_p256_to_bytes leaves bytes uninitialized");
92
- fiat_p256_to_bytes(out->bytes, in);
93
+ // See |fiat_p256_from_words|.
94
+ OPENSSL_memcpy(out->words, in, 32);
93
95
  }
94
96
 
95
97
  // fiat_p256_inv_square calculates |out| = |in|^{-2}
@@ -392,12 +394,18 @@ static void fiat_p256_select_point(const fiat_p256_limb_t idx, size_t size,
392
394
  }
393
395
  }
394
396
 
395
- // fiat_p256_get_bit returns the |i|th bit in |in|
396
- static crypto_word_t fiat_p256_get_bit(const uint8_t *in, int i) {
397
+ // fiat_p256_get_bit returns the |i|th bit in |in|.
398
+ static crypto_word_t fiat_p256_get_bit(const EC_SCALAR *in, int i) {
397
399
  if (i < 0 || i >= 256) {
398
400
  return 0;
399
401
  }
400
- return (in[i >> 3] >> (i & 7)) & 1;
402
+ #if defined(OPENSSL_64_BIT)
403
+ static_assert(sizeof(BN_ULONG) == 8, "BN_ULONG was not 64-bit");
404
+ return (in->words[i >> 6] >> (i & 63)) & 1;
405
+ #else
406
+ static_assert(sizeof(BN_ULONG) == 4, "BN_ULONG was not 32-bit");
407
+ return (in->words[i >> 5] >> (i & 31)) & 1;
408
+ #endif
401
409
  }
402
410
 
403
411
  // OPENSSL EC_METHOD FUNCTIONS
@@ -498,12 +506,12 @@ static void ec_GFp_nistp256_point_mul(const EC_GROUP *group, EC_RAW_POINT *r,
498
506
 
499
507
  // do other additions every 5 doublings
500
508
  if (i % 5 == 0) {
501
- crypto_word_t bits = fiat_p256_get_bit(scalar->bytes, i + 4) << 5;
502
- bits |= fiat_p256_get_bit(scalar->bytes, i + 3) << 4;
503
- bits |= fiat_p256_get_bit(scalar->bytes, i + 2) << 3;
504
- bits |= fiat_p256_get_bit(scalar->bytes, i + 1) << 2;
505
- bits |= fiat_p256_get_bit(scalar->bytes, i) << 1;
506
- bits |= fiat_p256_get_bit(scalar->bytes, i - 1);
509
+ crypto_word_t bits = fiat_p256_get_bit(scalar, i + 4) << 5;
510
+ bits |= fiat_p256_get_bit(scalar, i + 3) << 4;
511
+ bits |= fiat_p256_get_bit(scalar, i + 2) << 3;
512
+ bits |= fiat_p256_get_bit(scalar, i + 1) << 2;
513
+ bits |= fiat_p256_get_bit(scalar, i) << 1;
514
+ bits |= fiat_p256_get_bit(scalar, i - 1);
507
515
  crypto_word_t sign, digit;
508
516
  ec_GFp_nistp_recode_scalar_bits(&sign, &digit, bits);
509
517
 
@@ -543,10 +551,10 @@ static void ec_GFp_nistp256_point_mul_base(const EC_GROUP *group,
543
551
  }
544
552
 
545
553
  // First, look 32 bits upwards.
546
- crypto_word_t bits = fiat_p256_get_bit(scalar->bytes, i + 224) << 3;
547
- bits |= fiat_p256_get_bit(scalar->bytes, i + 160) << 2;
548
- bits |= fiat_p256_get_bit(scalar->bytes, i + 96) << 1;
549
- bits |= fiat_p256_get_bit(scalar->bytes, i + 32);
554
+ crypto_word_t bits = fiat_p256_get_bit(scalar, i + 224) << 3;
555
+ bits |= fiat_p256_get_bit(scalar, i + 160) << 2;
556
+ bits |= fiat_p256_get_bit(scalar, i + 96) << 1;
557
+ bits |= fiat_p256_get_bit(scalar, i + 32);
550
558
  // Select the point to add, in constant time.
551
559
  fiat_p256_select_point_affine((fiat_p256_limb_t)bits, 15,
552
560
  fiat_p256_g_pre_comp[1], tmp);
@@ -562,10 +570,10 @@ static void ec_GFp_nistp256_point_mul_base(const EC_GROUP *group,
562
570
  }
563
571
 
564
572
  // Second, look at the current position.
565
- bits = fiat_p256_get_bit(scalar->bytes, i + 192) << 3;
566
- bits |= fiat_p256_get_bit(scalar->bytes, i + 128) << 2;
567
- bits |= fiat_p256_get_bit(scalar->bytes, i + 64) << 1;
568
- bits |= fiat_p256_get_bit(scalar->bytes, i);
573
+ bits = fiat_p256_get_bit(scalar, i + 192) << 3;
574
+ bits |= fiat_p256_get_bit(scalar, i + 128) << 2;
575
+ bits |= fiat_p256_get_bit(scalar, i + 64) << 1;
576
+ bits |= fiat_p256_get_bit(scalar, i);
569
577
  // Select the point to add, in constant time.
570
578
  fiat_p256_select_point_affine((fiat_p256_limb_t)bits, 15,
571
579
  fiat_p256_g_pre_comp[0], tmp);
@@ -615,10 +623,10 @@ static void ec_GFp_nistp256_point_mul_public(const EC_GROUP *group,
615
623
  // constant-time lookup.
616
624
  if (i <= 31) {
617
625
  // First, look 32 bits upwards.
618
- crypto_word_t bits = fiat_p256_get_bit(g_scalar->bytes, i + 224) << 3;
619
- bits |= fiat_p256_get_bit(g_scalar->bytes, i + 160) << 2;
620
- bits |= fiat_p256_get_bit(g_scalar->bytes, i + 96) << 1;
621
- bits |= fiat_p256_get_bit(g_scalar->bytes, i + 32);
626
+ crypto_word_t bits = fiat_p256_get_bit(g_scalar, i + 224) << 3;
627
+ bits |= fiat_p256_get_bit(g_scalar, i + 160) << 2;
628
+ bits |= fiat_p256_get_bit(g_scalar, i + 96) << 1;
629
+ bits |= fiat_p256_get_bit(g_scalar, i + 32);
622
630
  if (bits != 0) {
623
631
  size_t index = (size_t)(bits - 1);
624
632
  fiat_p256_point_add(ret[0], ret[1], ret[2], ret[0], ret[1], ret[2],
@@ -629,10 +637,10 @@ static void ec_GFp_nistp256_point_mul_public(const EC_GROUP *group,
629
637
  }
630
638
 
631
639
  // Second, look at the current position.
632
- bits = fiat_p256_get_bit(g_scalar->bytes, i + 192) << 3;
633
- bits |= fiat_p256_get_bit(g_scalar->bytes, i + 128) << 2;
634
- bits |= fiat_p256_get_bit(g_scalar->bytes, i + 64) << 1;
635
- bits |= fiat_p256_get_bit(g_scalar->bytes, i);
640
+ bits = fiat_p256_get_bit(g_scalar, i + 192) << 3;
641
+ bits |= fiat_p256_get_bit(g_scalar, i + 128) << 2;
642
+ bits |= fiat_p256_get_bit(g_scalar, i + 64) << 1;
643
+ bits |= fiat_p256_get_bit(g_scalar, i);
636
644
  if (bits != 0) {
637
645
  size_t index = (size_t)(bits - 1);
638
646
  fiat_p256_point_add(ret[0], ret[1], ret[2], ret[0], ret[1], ret[2],
@@ -685,7 +693,7 @@ static int ec_GFp_nistp256_cmp_x_coordinate(const EC_GROUP *group,
685
693
  fiat_p256_mul(Z2_mont, Z2_mont, Z2_mont);
686
694
 
687
695
  fiat_p256_felem r_Z2;
688
- fiat_p256_from_bytes(r_Z2, r->bytes); // r < order < p, so this is valid.
696
+ fiat_p256_from_words(r_Z2, r->words); // r < order < p, so this is valid.
689
697
  fiat_p256_mul(r_Z2, r_Z2, Z2_mont);
690
698
 
691
699
  fiat_p256_felem X;
@@ -731,6 +739,10 @@ DEFINE_METHOD_FUNCTION(EC_METHOD, EC_GFp_nistp256_method) {
731
739
  out->felem_sqr = ec_GFp_mont_felem_sqr;
732
740
  out->felem_to_bytes = ec_GFp_mont_felem_to_bytes;
733
741
  out->felem_from_bytes = ec_GFp_mont_felem_from_bytes;
742
+ out->felem_reduce = ec_GFp_mont_felem_reduce;
743
+ // TODO(davidben): This should use the specialized field arithmetic
744
+ // implementation, rather than the generic one.
745
+ out->felem_exp = ec_GFp_mont_felem_exp;
734
746
  out->scalar_inv0_montgomery = ec_simple_scalar_inv0_montgomery;
735
747
  out->scalar_to_montgomery_inv_vartime =
736
748
  ec_simple_scalar_to_montgomery_inv_vartime;
@@ -54,9 +54,7 @@ int ec_random_nonzero_scalar(const EC_GROUP *group, EC_SCALAR *out,
54
54
  void ec_scalar_to_bytes(const EC_GROUP *group, uint8_t *out, size_t *out_len,
55
55
  const EC_SCALAR *in) {
56
56
  size_t len = BN_num_bytes(&group->order);
57
- for (size_t i = 0; i < len; i++) {
58
- out[len - i - 1] = in->bytes[i];
59
- }
57
+ bn_words_to_big_endian(out, len, in->words, group->order.width);
60
58
  *out_len = len;
61
59
  }
62
60
 
@@ -67,11 +65,7 @@ int ec_scalar_from_bytes(const EC_GROUP *group, EC_SCALAR *out,
67
65
  return 0;
68
66
  }
69
67
 
70
- OPENSSL_memset(out, 0, sizeof(EC_SCALAR));
71
-
72
- for (size_t i = 0; i < len; i++) {
73
- out->bytes[i] = in[len - i - 1];
74
- }
68
+ bn_big_endian_to_words(out->words, group->order.width, in, len);
75
69
 
76
70
  if (!bn_less_than_words(out->words, group->order.d, group->order.width)) {
77
71
  OPENSSL_PUT_ERROR(EC, EC_R_INVALID_SCALAR);
@@ -330,9 +330,7 @@ int ec_GFp_simple_cmp_x_coordinate(const EC_GROUP *group, const EC_RAW_POINT *p,
330
330
  void ec_GFp_simple_felem_to_bytes(const EC_GROUP *group, uint8_t *out,
331
331
  size_t *out_len, const EC_FELEM *in) {
332
332
  size_t len = BN_num_bytes(&group->field);
333
- for (size_t i = 0; i < len; i++) {
334
- out[i] = in->bytes[len - 1 - i];
335
- }
333
+ bn_words_to_big_endian(out, len, in->words, group->field.width);
336
334
  *out_len = len;
337
335
  }
338
336
 
@@ -343,10 +341,7 @@ int ec_GFp_simple_felem_from_bytes(const EC_GROUP *group, EC_FELEM *out,
343
341
  return 0;
344
342
  }
345
343
 
346
- OPENSSL_memset(out, 0, sizeof(EC_FELEM));
347
- for (size_t i = 0; i < len; i++) {
348
- out->bytes[i] = in[len - 1 - i];
349
- }
344
+ bn_big_endian_to_words(out->words, group->field.width, in, len);
350
345
 
351
346
  if (!bn_less_than_words(out->words, group->field.d, group->field.width)) {
352
347
  OPENSSL_PUT_ERROR(EC, EC_R_DECODE_ERROR);
@@ -202,9 +202,8 @@ int ec_GFp_mont_init_precomp(const EC_GROUP *group, EC_PRECOMP *out,
202
202
 
203
203
  // Store the comb in affine coordinates to shrink the table. (This reduces
204
204
  // cache pressure and makes the constant-time selects faster.)
205
- OPENSSL_STATIC_ASSERT(
206
- OPENSSL_ARRAY_SIZE(comb) == OPENSSL_ARRAY_SIZE(out->comb),
207
- "comb sizes did not match");
205
+ static_assert(OPENSSL_ARRAY_SIZE(comb) == OPENSSL_ARRAY_SIZE(out->comb),
206
+ "comb sizes did not match");
208
207
  return ec_jacobian_to_affine_batch(group, out->comb, comb,
209
208
  OPENSSL_ARRAY_SIZE(comb));
210
209
  }
@@ -205,7 +205,6 @@ int ec_GFp_mont_mul_public_batch(const EC_GROUP *group, EC_RAW_POINT *r,
205
205
  wNAF_alloc = OPENSSL_malloc(num * sizeof(wNAF_alloc[0]));
206
206
  precomp_alloc = OPENSSL_malloc(num * sizeof(precomp_alloc[0]));
207
207
  if (wNAF_alloc == NULL || precomp_alloc == NULL) {
208
- OPENSSL_PUT_ERROR(EC, ERR_R_MALLOC_FAILURE);
209
208
  goto err;
210
209
  }
211
210
  wNAF = wNAF_alloc;
@@ -74,11 +74,15 @@
74
74
  #include <openssl/mem.h>
75
75
  #include <openssl/sha.h>
76
76
 
77
+ #include "../../internal.h"
77
78
  #include "../ec/internal.h"
79
+ #include "../service_indicator/internal.h"
78
80
 
79
81
 
80
82
  int ECDH_compute_key_fips(uint8_t *out, size_t out_len, const EC_POINT *pub_key,
81
83
  const EC_KEY *priv_key) {
84
+ boringssl_ensure_ecc_self_test();
85
+
82
86
  if (priv_key->priv_key == NULL) {
83
87
  OPENSSL_PUT_ERROR(ECDH, ECDH_R_NO_PRIVATE_VALUE);
84
88
  return 0;
@@ -100,6 +104,7 @@ int ECDH_compute_key_fips(uint8_t *out, size_t out_len, const EC_POINT *pub_key,
100
104
  return 0;
101
105
  }
102
106
 
107
+ FIPS_service_indicator_lock_state();
103
108
  switch (out_len) {
104
109
  case SHA224_DIGEST_LENGTH:
105
110
  SHA224(buf, buflen, out);
@@ -115,8 +120,11 @@ int ECDH_compute_key_fips(uint8_t *out, size_t out_len, const EC_POINT *pub_key,
115
120
  break;
116
121
  default:
117
122
  OPENSSL_PUT_ERROR(ECDH, ECDH_R_UNKNOWN_DIGEST_LENGTH);
123
+ FIPS_service_indicator_unlock_state();
118
124
  return 0;
119
125
  }
126
+ FIPS_service_indicator_unlock_state();
120
127
 
128
+ ECDH_verify_service_indicator(priv_key);
121
129
  return 1;
122
130
  }
@@ -59,11 +59,11 @@
59
59
  #include <openssl/err.h>
60
60
  #include <openssl/mem.h>
61
61
  #include <openssl/sha.h>
62
- #include <openssl/type_check.h>
63
62
 
64
63
  #include "../../internal.h"
65
64
  #include "../bn/internal.h"
66
65
  #include "../ec/internal.h"
66
+ #include "../service_indicator/internal.h"
67
67
  #include "internal.h"
68
68
 
69
69
 
@@ -78,10 +78,7 @@ static void digest_to_scalar(const EC_GROUP *group, EC_SCALAR *out,
78
78
  if (digest_len > num_bytes) {
79
79
  digest_len = num_bytes;
80
80
  }
81
- OPENSSL_memset(out, 0, sizeof(EC_SCALAR));
82
- for (size_t i = 0; i < digest_len; i++) {
83
- out->bytes[i] = digest[digest_len - 1 - i];
84
- }
81
+ bn_big_endian_to_words(out->words, order->width, digest, digest_len);
85
82
 
86
83
  // If it is still too long, truncate remaining bits with a shift.
87
84
  if (8 * digest_len > num_bits) {
@@ -151,8 +148,8 @@ int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s) {
151
148
  return 1;
152
149
  }
153
150
 
154
- int ECDSA_do_verify(const uint8_t *digest, size_t digest_len,
155
- const ECDSA_SIG *sig, const EC_KEY *eckey) {
151
+ int ecdsa_do_verify_no_self_test(const uint8_t *digest, size_t digest_len,
152
+ const ECDSA_SIG *sig, const EC_KEY *eckey) {
156
153
  const EC_GROUP *group = EC_KEY_get0_group(eckey);
157
154
  const EC_POINT *pub_key = EC_KEY_get0_public_key(eckey);
158
155
  if (group == NULL || pub_key == NULL || sig == NULL) {
@@ -198,6 +195,13 @@ int ECDSA_do_verify(const uint8_t *digest, size_t digest_len,
198
195
  return 1;
199
196
  }
200
197
 
198
+ int ECDSA_do_verify(const uint8_t *digest, size_t digest_len,
199
+ const ECDSA_SIG *sig, const EC_KEY *eckey) {
200
+ boringssl_ensure_ecc_self_test();
201
+
202
+ return ecdsa_do_verify_no_self_test(digest, digest_len, sig, eckey);
203
+ }
204
+
201
205
  static ECDSA_SIG *ecdsa_sign_impl(const EC_GROUP *group, int *out_retry,
202
206
  const EC_SCALAR *priv_key, const EC_SCALAR *k,
203
207
  const uint8_t *digest, size_t digest_len) {
@@ -292,12 +296,16 @@ ECDSA_SIG *ecdsa_sign_with_nonce_for_known_answer_test(const uint8_t *digest,
292
296
  ECDSA_SIG *ECDSA_sign_with_nonce_and_leak_private_key_for_testing(
293
297
  const uint8_t *digest, size_t digest_len, const EC_KEY *eckey,
294
298
  const uint8_t *nonce, size_t nonce_len) {
299
+ boringssl_ensure_ecc_self_test();
300
+
295
301
  return ecdsa_sign_with_nonce_for_known_answer_test(digest, digest_len, eckey,
296
302
  nonce, nonce_len);
297
303
  }
298
304
 
299
305
  ECDSA_SIG *ECDSA_do_sign(const uint8_t *digest, size_t digest_len,
300
306
  const EC_KEY *eckey) {
307
+ boringssl_ensure_ecc_self_test();
308
+
301
309
  if (eckey->ecdsa_meth && eckey->ecdsa_meth->sign) {
302
310
  OPENSSL_PUT_ERROR(ECDSA, ECDSA_R_NOT_IMPLEMENTED);
303
311
  return NULL;
@@ -313,8 +321,11 @@ ECDSA_SIG *ECDSA_do_sign(const uint8_t *digest, size_t digest_len,
313
321
 
314
322
  // Pass a SHA512 hash of the private key and digest as additional data
315
323
  // into the RBG. This is a hardening measure against entropy failure.
316
- OPENSSL_STATIC_ASSERT(SHA512_DIGEST_LENGTH >= 32,
317
- "additional_data is too large for SHA-512");
324
+ static_assert(SHA512_DIGEST_LENGTH >= 32,
325
+ "additional_data is too large for SHA-512");
326
+
327
+ FIPS_service_indicator_lock_state();
328
+
318
329
  SHA512_CTX sha;
319
330
  uint8_t additional_data[SHA512_DIGEST_LENGTH];
320
331
  SHA512_Init(&sha);
@@ -322,17 +333,34 @@ ECDSA_SIG *ECDSA_do_sign(const uint8_t *digest, size_t digest_len,
322
333
  SHA512_Update(&sha, digest, digest_len);
323
334
  SHA512_Final(additional_data, &sha);
324
335
 
336
+ // Cap iterations so callers who supply invalid values as custom groups do not
337
+ // infinite loop. This does not impact valid parameters (e.g. those covered by
338
+ // FIPS) because the probability of requiring even one retry is negligible,
339
+ // let alone 32.
340
+ static const int kMaxIterations = 32;
341
+ ECDSA_SIG *ret = NULL;
342
+ int iters = 0;
325
343
  for (;;) {
326
344
  EC_SCALAR k;
327
345
  if (!ec_random_nonzero_scalar(group, &k, additional_data)) {
328
- return NULL;
346
+ ret = NULL;
347
+ goto out;
329
348
  }
330
349
 
331
350
  int retry;
332
- ECDSA_SIG *sig =
333
- ecdsa_sign_impl(group, &retry, priv_key, &k, digest, digest_len);
334
- if (sig != NULL || !retry) {
335
- return sig;
351
+ ret = ecdsa_sign_impl(group, &retry, priv_key, &k, digest, digest_len);
352
+ if (ret != NULL || !retry) {
353
+ goto out;
354
+ }
355
+
356
+ iters++;
357
+ if (iters > kMaxIterations) {
358
+ OPENSSL_PUT_ERROR(ECDSA, ECDSA_R_TOO_MANY_ITERATIONS);
359
+ goto out;
336
360
  }
337
361
  }
362
+
363
+ out:
364
+ FIPS_service_indicator_unlock_state();
365
+ return ret;
338
366
  }
@@ -31,6 +31,12 @@ ECDSA_SIG *ecdsa_sign_with_nonce_for_known_answer_test(const uint8_t *digest,
31
31
  const uint8_t *nonce,
32
32
  size_t nonce_len);
33
33
 
34
+ // ecdsa_do_verify_no_self_test does the same as |ECDSA_do_verify|, but doesn't
35
+ // try to run the self-test first. This is for use in the self tests themselves,
36
+ // to prevent an infinite loop.
37
+ int ecdsa_do_verify_no_self_test(const uint8_t *digest, size_t digest_len,
38
+ const ECDSA_SIG *sig, const EC_KEY *eckey);
39
+
34
40
 
35
41
  #if defined(__cplusplus)
36
42
  }
@@ -63,6 +63,7 @@
63
63
  #include <openssl/mem.h>
64
64
 
65
65
  #include "../../internal.h"
66
+ #include "../service_indicator/internal.h"
66
67
 
67
68
 
68
69
  uint8_t *HMAC(const EVP_MD *evp_md, const void *key, size_t key_len,
@@ -70,13 +71,22 @@ uint8_t *HMAC(const EVP_MD *evp_md, const void *key, size_t key_len,
70
71
  unsigned int *out_len) {
71
72
  HMAC_CTX ctx;
72
73
  HMAC_CTX_init(&ctx);
73
- if (!HMAC_Init_ex(&ctx, key, key_len, evp_md, NULL) ||
74
- !HMAC_Update(&ctx, data, data_len) ||
75
- !HMAC_Final(&ctx, out, out_len)) {
76
- out = NULL;
77
- }
74
+
75
+ // The underlying hash functions should not set the FIPS service indicator
76
+ // until all operations have completed.
77
+ FIPS_service_indicator_lock_state();
78
+ const int ok = HMAC_Init_ex(&ctx, key, key_len, evp_md, NULL) &&
79
+ HMAC_Update(&ctx, data, data_len) &&
80
+ HMAC_Final(&ctx, out, out_len);
81
+ FIPS_service_indicator_unlock_state();
78
82
 
79
83
  HMAC_CTX_cleanup(&ctx);
84
+
85
+ if (!ok) {
86
+ return NULL;
87
+ }
88
+
89
+ HMAC_verify_service_indicator(evp_md);
80
90
  return out;
81
91
  }
82
92
 
@@ -102,6 +112,13 @@ void HMAC_CTX_cleanup(HMAC_CTX *ctx) {
102
112
  OPENSSL_cleanse(ctx, sizeof(HMAC_CTX));
103
113
  }
104
114
 
115
+ void HMAC_CTX_cleanse(HMAC_CTX *ctx) {
116
+ EVP_MD_CTX_cleanse(&ctx->i_ctx);
117
+ EVP_MD_CTX_cleanse(&ctx->o_ctx);
118
+ EVP_MD_CTX_cleanse(&ctx->md_ctx);
119
+ OPENSSL_cleanse(ctx, sizeof(HMAC_CTX));
120
+ }
121
+
105
122
  void HMAC_CTX_free(HMAC_CTX *ctx) {
106
123
  if (ctx == NULL) {
107
124
  return;
@@ -113,6 +130,9 @@ void HMAC_CTX_free(HMAC_CTX *ctx) {
113
130
 
114
131
  int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, size_t key_len,
115
132
  const EVP_MD *md, ENGINE *impl) {
133
+ int ret = 0;
134
+ FIPS_service_indicator_lock_state();
135
+
116
136
  if (md == NULL) {
117
137
  md = ctx->md;
118
138
  }
@@ -131,12 +151,13 @@ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, size_t key_len,
131
151
 
132
152
  size_t block_size = EVP_MD_block_size(md);
133
153
  assert(block_size <= sizeof(key_block));
154
+ assert(EVP_MD_size(md) <= block_size);
134
155
  if (block_size < key_len) {
135
156
  // Long keys are hashed.
136
157
  if (!EVP_DigestInit_ex(&ctx->md_ctx, md, impl) ||
137
158
  !EVP_DigestUpdate(&ctx->md_ctx, key, key_len) ||
138
159
  !EVP_DigestFinal_ex(&ctx->md_ctx, key_block, &key_block_len)) {
139
- return 0;
160
+ goto out;
140
161
  }
141
162
  } else {
142
163
  assert(key_len <= sizeof(key_block));
@@ -144,34 +165,32 @@ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, size_t key_len,
144
165
  key_block_len = (unsigned)key_len;
145
166
  }
146
167
  // Keys are then padded with zeros.
147
- if (key_block_len != EVP_MAX_MD_BLOCK_SIZE) {
148
- OPENSSL_memset(&key_block[key_block_len], 0, sizeof(key_block) - key_block_len);
149
- }
168
+ OPENSSL_memset(key_block + key_block_len, 0, block_size - key_block_len);
150
169
 
151
- for (size_t i = 0; i < EVP_MAX_MD_BLOCK_SIZE; i++) {
170
+ for (size_t i = 0; i < block_size; i++) {
152
171
  pad[i] = 0x36 ^ key_block[i];
153
172
  }
154
173
  if (!EVP_DigestInit_ex(&ctx->i_ctx, md, impl) ||
155
- !EVP_DigestUpdate(&ctx->i_ctx, pad, EVP_MD_block_size(md))) {
156
- return 0;
174
+ !EVP_DigestUpdate(&ctx->i_ctx, pad, block_size)) {
175
+ goto out;
157
176
  }
158
177
 
159
- for (size_t i = 0; i < EVP_MAX_MD_BLOCK_SIZE; i++) {
178
+ for (size_t i = 0; i < block_size; i++) {
160
179
  pad[i] = 0x5c ^ key_block[i];
161
180
  }
162
181
  if (!EVP_DigestInit_ex(&ctx->o_ctx, md, impl) ||
163
- !EVP_DigestUpdate(&ctx->o_ctx, pad, EVP_MD_block_size(md))) {
164
- return 0;
182
+ !EVP_DigestUpdate(&ctx->o_ctx, pad, block_size)) {
183
+ goto out;
165
184
  }
166
185
 
167
186
  ctx->md = md;
168
187
  }
169
188
 
170
- if (!EVP_MD_CTX_copy_ex(&ctx->md_ctx, &ctx->i_ctx)) {
171
- return 0;
172
- }
189
+ ret = EVP_MD_CTX_copy_ex(&ctx->md_ctx, &ctx->i_ctx);
173
190
 
174
- return 1;
191
+ out:
192
+ FIPS_service_indicator_unlock_state();
193
+ return ret;
175
194
  }
176
195
 
177
196
  int HMAC_Update(HMAC_CTX *ctx, const uint8_t *data, size_t data_len) {
@@ -179,9 +198,11 @@ int HMAC_Update(HMAC_CTX *ctx, const uint8_t *data, size_t data_len) {
179
198
  }
180
199
 
181
200
  int HMAC_Final(HMAC_CTX *ctx, uint8_t *out, unsigned int *out_len) {
201
+ int ret = 0;
182
202
  unsigned int i;
183
203
  uint8_t buf[EVP_MAX_MD_SIZE];
184
204
 
205
+ FIPS_service_indicator_lock_state();
185
206
  // TODO(davidben): The only thing that can officially fail here is
186
207
  // |EVP_MD_CTX_copy_ex|, but even that should be impossible in this case.
187
208
  if (!EVP_DigestFinal_ex(&ctx->md_ctx, buf, &i) ||
@@ -189,16 +210,23 @@ int HMAC_Final(HMAC_CTX *ctx, uint8_t *out, unsigned int *out_len) {
189
210
  !EVP_DigestUpdate(&ctx->md_ctx, buf, i) ||
190
211
  !EVP_DigestFinal_ex(&ctx->md_ctx, out, out_len)) {
191
212
  *out_len = 0;
192
- return 0;
213
+ goto out;
193
214
  }
194
215
 
195
- return 1;
196
- }
216
+ ret = 1;
197
217
 
198
- size_t HMAC_size(const HMAC_CTX *ctx) {
199
- return EVP_MD_size(ctx->md);
218
+ out:
219
+ FIPS_service_indicator_unlock_state();
220
+ if (ret) {
221
+ HMAC_verify_service_indicator(ctx->md);
222
+ }
223
+ return ret;
200
224
  }
201
225
 
226
+ size_t HMAC_size(const HMAC_CTX *ctx) { return EVP_MD_size(ctx->md); }
227
+
228
+ const EVP_MD *HMAC_CTX_get_md(const HMAC_CTX *ctx) { return ctx->md; }
229
+
202
230
  int HMAC_CTX_copy_ex(HMAC_CTX *dest, const HMAC_CTX *src) {
203
231
  if (!EVP_MD_CTX_copy_ex(&dest->i_ctx, &src->i_ctx) ||
204
232
  !EVP_MD_CTX_copy_ex(&dest->o_ctx, &src->o_ctx) ||
@@ -49,8 +49,6 @@
49
49
  #include <assert.h>
50
50
  #include <string.h>
51
51
 
52
- #include <openssl/type_check.h>
53
-
54
52
  #include "internal.h"
55
53
  #include "../../internal.h"
56
54
 
@@ -116,16 +114,12 @@ void CRYPTO_cbc128_decrypt(const uint8_t *in, uint8_t *out, size_t len,
116
114
  assert(inptr >= outptr || inptr + len <= outptr);
117
115
 
118
116
  size_t n;
119
- union {
120
- crypto_word_t t[16 / sizeof(crypto_word_t)];
121
- uint8_t c[16];
122
- } tmp;
123
-
117
+ alignas(16) uint8_t tmp[16];
124
118
  if ((inptr >= 32 && outptr <= inptr - 32) || inptr < outptr) {
125
119
  // If |out| is at least two blocks behind |in| or completely disjoint, there
126
120
  // is no need to decrypt to a temporary block.
127
- OPENSSL_STATIC_ASSERT(16 % sizeof(crypto_word_t) == 0,
128
- "block cannot be evenly divided into words");
121
+ static_assert(16 % sizeof(crypto_word_t) == 0,
122
+ "block cannot be evenly divided into words");
129
123
  const uint8_t *iv = ivec;
130
124
  while (len >= 16) {
131
125
  (*block)(in, out, key);
@@ -140,14 +134,14 @@ void CRYPTO_cbc128_decrypt(const uint8_t *in, uint8_t *out, size_t len,
140
134
  }
141
135
  OPENSSL_memcpy(ivec, iv, 16);
142
136
  } else {
143
- OPENSSL_STATIC_ASSERT(16 % sizeof(crypto_word_t) == 0,
144
- "block cannot be evenly divided into words");
137
+ static_assert(16 % sizeof(crypto_word_t) == 0,
138
+ "block cannot be evenly divided into words");
145
139
 
146
140
  while (len >= 16) {
147
- (*block)(in, tmp.c, key);
141
+ (*block)(in, tmp, key);
148
142
  for (n = 0; n < 16; n += sizeof(crypto_word_t)) {
149
143
  crypto_word_t c = CRYPTO_load_word_le(in + n);
150
- CRYPTO_store_word_le(out + n, tmp.t[n / sizeof(crypto_word_t)] ^
144
+ CRYPTO_store_word_le(out + n, CRYPTO_load_word_le(tmp + n) ^
151
145
  CRYPTO_load_word_le(ivec + n));
152
146
  CRYPTO_store_word_le(ivec + n, c);
153
147
  }
@@ -159,10 +153,10 @@ void CRYPTO_cbc128_decrypt(const uint8_t *in, uint8_t *out, size_t len,
159
153
 
160
154
  while (len) {
161
155
  uint8_t c;
162
- (*block)(in, tmp.c, key);
156
+ (*block)(in, tmp, key);
163
157
  for (n = 0; n < 16 && n < len; ++n) {
164
158
  c = in[n];
165
- out[n] = tmp.c[n] ^ ivec[n];
159
+ out[n] = tmp[n] ^ ivec[n];
166
160
  ivec[n] = c;
167
161
  }
168
162
  if (len <= 16) {
@@ -46,16 +46,13 @@
46
46
  * OF THE POSSIBILITY OF SUCH DAMAGE.
47
47
  * ==================================================================== */
48
48
 
49
- #include <openssl/type_check.h>
50
-
51
49
  #include <assert.h>
52
50
  #include <string.h>
53
51
 
54
52
  #include "internal.h"
55
53
 
56
54
 
57
- OPENSSL_STATIC_ASSERT(16 % sizeof(size_t) == 0,
58
- "block cannot be divided into size_t");
55
+ static_assert(16 % sizeof(size_t) == 0, "block cannot be divided into size_t");
59
56
 
60
57
  void CRYPTO_cfb128_encrypt(const uint8_t *in, uint8_t *out, size_t len,
61
58
  const AES_KEY *key, uint8_t ivec[16], unsigned *num,
@@ -46,8 +46,6 @@
46
46
  * OF THE POSSIBILITY OF SUCH DAMAGE.
47
47
  * ==================================================================== */
48
48
 
49
- #include <openssl/type_check.h>
50
-
51
49
  #include <assert.h>
52
50
  #include <string.h>
53
51
 
@@ -70,8 +68,8 @@ static void ctr128_inc(uint8_t *counter) {
70
68
  } while (n);
71
69
  }
72
70
 
73
- OPENSSL_STATIC_ASSERT(16 % sizeof(crypto_word_t) == 0,
74
- "block cannot be divided into crypto_word_t");
71
+ static_assert(16 % sizeof(crypto_word_t) == 0,
72
+ "block cannot be divided into crypto_word_t");
75
73
 
76
74
  // The input encrypted as though 128bit counter mode is being used. The extra
77
75
  // state information to record how much of the 128bit block we have used is