grpc 1.37.1 → 1.38.0.pre1

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 (544) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +64 -58
  3. data/include/grpc/event_engine/README.md +38 -0
  4. data/include/grpc/event_engine/channel_args.h +28 -0
  5. data/include/grpc/event_engine/event_engine.h +336 -0
  6. data/include/grpc/event_engine/port.h +39 -0
  7. data/include/grpc/event_engine/slice_allocator.h +81 -0
  8. data/include/grpc/grpc.h +2 -2
  9. data/include/grpc/grpc_security_constants.h +14 -0
  10. data/include/grpc/impl/codegen/grpc_types.h +11 -0
  11. data/include/grpc/impl/codegen/port_platform.h +5 -0
  12. data/include/grpc/module.modulemap +14 -14
  13. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  14. data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
  15. data/src/core/ext/filters/client_channel/client_channel.cc +628 -3101
  16. data/src/core/ext/filters/client_channel/client_channel.h +489 -55
  17. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
  18. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
  19. data/src/core/ext/filters/client_channel/config_selector.h +1 -1
  20. data/src/core/ext/filters/client_channel/connector.h +1 -1
  21. data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
  22. data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
  23. data/src/core/ext/filters/client_channel/health/health_check_client.cc +26 -27
  24. data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
  25. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
  26. data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
  27. data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +46 -43
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
  32. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +5 -5
  33. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +14 -12
  34. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
  35. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
  36. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +36 -30
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +23 -23
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +31 -46
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +84 -61
  41. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
  42. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
  43. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  44. data/src/core/ext/filters/client_channel/resolver.h +2 -2
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -15
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  52. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  53. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  54. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -9
  55. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
  56. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
  57. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +13 -11
  58. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
  59. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +43 -28
  60. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
  61. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
  62. data/src/core/ext/filters/client_channel/retry_filter.cc +2188 -0
  63. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  64. data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
  65. data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
  66. data/src/core/ext/filters/client_channel/server_address.cc +1 -1
  67. data/src/core/ext/filters/client_channel/service_config.cc +15 -14
  68. data/src/core/ext/filters/client_channel/service_config.h +7 -6
  69. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
  70. data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
  71. data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
  72. data/src/core/ext/filters/client_channel/subchannel.cc +17 -16
  73. data/src/core/ext/filters/client_channel/subchannel.h +7 -6
  74. data/src/core/ext/filters/client_idle/client_idle_filter.cc +16 -15
  75. data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
  76. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -18
  77. data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
  78. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  79. data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
  80. data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
  81. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
  82. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
  83. data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
  84. data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
  85. data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
  86. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  87. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -3
  88. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
  89. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
  90. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
  91. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
  92. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
  93. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -45
  94. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
  95. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
  96. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +2 -2
  97. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
  98. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +129 -116
  99. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
  100. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
  101. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  102. data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
  103. data/src/core/ext/transport/chttp2/transport/frame_data.cc +8 -8
  104. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
  105. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
  106. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
  107. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
  108. data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
  109. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
  110. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
  111. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
  112. data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
  113. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
  114. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
  115. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
  116. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
  117. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
  118. data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
  119. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  120. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
  121. data/src/core/ext/transport/chttp2/transport/internal.h +31 -27
  122. data/src/core/ext/transport/chttp2/transport/parsing.cc +63 -56
  123. data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
  124. data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
  125. data/src/core/ext/xds/certificate_provider_factory.h +1 -1
  126. data/src/core/ext/xds/certificate_provider_store.h +3 -3
  127. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
  128. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
  129. data/src/core/ext/xds/xds_api.cc +101 -93
  130. data/src/core/ext/xds/xds_api.h +6 -6
  131. data/src/core/ext/xds/xds_bootstrap.cc +97 -159
  132. data/src/core/ext/xds/xds_bootstrap.h +19 -24
  133. data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
  134. data/src/core/ext/xds/xds_certificate_provider.h +4 -4
  135. data/src/core/ext/xds/xds_channel_args.h +5 -2
  136. data/src/core/ext/xds/xds_client.cc +310 -178
  137. data/src/core/ext/xds/xds_client.h +41 -27
  138. data/src/core/ext/xds/xds_client_stats.h +3 -2
  139. data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
  140. data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
  141. data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
  142. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +3 -20
  143. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +6 -11
  144. data/src/core/lib/channel/channel_stack.cc +10 -9
  145. data/src/core/lib/channel/channel_stack.h +10 -9
  146. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  147. data/src/core/lib/channel/channel_stack_builder.h +1 -1
  148. data/src/core/lib/channel/channelz.cc +21 -13
  149. data/src/core/lib/channel/connected_channel.cc +4 -4
  150. data/src/core/lib/channel/handshaker.cc +7 -6
  151. data/src/core/lib/channel/handshaker.h +5 -5
  152. data/src/core/lib/event_engine/slice_allocator.cc +59 -0
  153. data/src/core/lib/event_engine/sockaddr.cc +38 -0
  154. data/src/core/lib/gprpp/ref_counted.h +28 -14
  155. data/src/core/lib/gprpp/status_helper.cc +407 -0
  156. data/src/core/lib/gprpp/status_helper.h +180 -0
  157. data/src/core/lib/http/httpcli.cc +11 -11
  158. data/src/core/lib/http/httpcli_security_connector.cc +11 -7
  159. data/src/core/lib/http/parser.cc +16 -16
  160. data/src/core/lib/http/parser.h +4 -4
  161. data/src/core/lib/iomgr/buffer_list.cc +7 -9
  162. data/src/core/lib/iomgr/buffer_list.h +4 -5
  163. data/src/core/lib/iomgr/call_combiner.cc +15 -12
  164. data/src/core/lib/iomgr/call_combiner.h +12 -14
  165. data/src/core/lib/iomgr/cfstream_handle.cc +3 -3
  166. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  167. data/src/core/lib/iomgr/closure.h +7 -6
  168. data/src/core/lib/iomgr/combiner.cc +14 -12
  169. data/src/core/lib/iomgr/combiner.h +2 -2
  170. data/src/core/lib/iomgr/endpoint.cc +1 -1
  171. data/src/core/lib/iomgr/endpoint.h +2 -2
  172. data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
  173. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  174. data/src/core/lib/iomgr/error.cc +167 -61
  175. data/src/core/lib/iomgr/error.h +217 -106
  176. data/src/core/lib/iomgr/error_cfstream.cc +3 -2
  177. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  178. data/src/core/lib/iomgr/error_internal.h +5 -1
  179. data/src/core/lib/iomgr/ev_apple.cc +5 -5
  180. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
  181. data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
  182. data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
  183. data/src/core/lib/iomgr/ev_posix.cc +9 -8
  184. data/src/core/lib/iomgr/ev_posix.h +9 -9
  185. data/src/core/lib/iomgr/exec_ctx.cc +4 -4
  186. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  187. data/src/core/lib/iomgr/executor.cc +8 -8
  188. data/src/core/lib/iomgr/executor.h +2 -2
  189. data/src/core/lib/iomgr/iomgr.cc +1 -1
  190. data/src/core/lib/iomgr/iomgr.h +1 -1
  191. data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
  192. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  193. data/src/core/lib/iomgr/iomgr_internal.h +3 -3
  194. data/src/core/lib/iomgr/iomgr_posix.cc +1 -1
  195. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
  196. data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
  197. data/src/core/lib/iomgr/load_file.cc +4 -4
  198. data/src/core/lib/iomgr/load_file.h +2 -2
  199. data/src/core/lib/iomgr/lockfree_event.cc +5 -5
  200. data/src/core/lib/iomgr/lockfree_event.h +1 -1
  201. data/src/core/lib/iomgr/pollset.cc +5 -5
  202. data/src/core/lib/iomgr/pollset.h +9 -9
  203. data/src/core/lib/iomgr/pollset_custom.cc +5 -5
  204. data/src/core/lib/iomgr/pollset_windows.cc +5 -5
  205. data/src/core/lib/iomgr/port.h +1 -1
  206. data/src/core/lib/iomgr/python_util.h +1 -1
  207. data/src/core/lib/iomgr/resolve_address.cc +3 -3
  208. data/src/core/lib/iomgr/resolve_address.h +6 -6
  209. data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
  210. data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
  211. data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
  212. data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
  213. data/src/core/lib/iomgr/resource_quota.cc +11 -10
  214. data/src/core/lib/iomgr/socket_utils_common_posix.cc +22 -20
  215. data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
  216. data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
  217. data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
  218. data/src/core/lib/iomgr/tcp_client_posix.cc +15 -17
  219. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  220. data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
  221. data/src/core/lib/iomgr/tcp_custom.cc +14 -16
  222. data/src/core/lib/iomgr/tcp_custom.h +13 -12
  223. data/src/core/lib/iomgr/tcp_posix.cc +36 -34
  224. data/src/core/lib/iomgr/tcp_server.cc +6 -6
  225. data/src/core/lib/iomgr/tcp_server.h +12 -11
  226. data/src/core/lib/iomgr/tcp_server_custom.cc +23 -21
  227. data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
  228. data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
  229. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
  230. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
  231. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  232. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
  233. data/src/core/lib/iomgr/tcp_uv.cc +25 -23
  234. data/src/core/lib/iomgr/tcp_windows.cc +13 -13
  235. data/src/core/lib/iomgr/tcp_windows.h +2 -2
  236. data/src/core/lib/iomgr/timer_custom.cc +2 -1
  237. data/src/core/lib/iomgr/timer_custom.h +1 -1
  238. data/src/core/lib/iomgr/timer_generic.cc +6 -6
  239. data/src/core/lib/iomgr/udp_server.cc +21 -20
  240. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
  241. data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
  242. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
  243. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  244. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
  245. data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
  246. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  247. data/src/core/lib/iomgr/work_serializer.h +17 -1
  248. data/src/core/lib/json/json.h +1 -1
  249. data/src/core/lib/json/json_reader.cc +4 -4
  250. data/src/core/lib/matchers/matchers.cc +39 -39
  251. data/src/core/lib/matchers/matchers.h +28 -28
  252. data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
  253. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  254. data/src/core/lib/security/credentials/credentials.h +2 -2
  255. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
  256. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
  257. data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
  258. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  259. data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
  260. data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
  261. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
  262. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
  263. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
  264. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
  265. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
  266. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  267. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -9
  268. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
  269. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  270. data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
  271. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
  272. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
  273. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
  274. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
  275. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
  276. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
  277. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
  278. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
  279. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
  280. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
  281. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
  282. data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
  283. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
  284. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
  285. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  286. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
  287. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
  288. data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -4
  289. data/src/core/lib/security/security_connector/security_connector.h +9 -4
  290. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
  291. data/src/core/lib/security/security_connector/ssl_utils.cc +22 -4
  292. data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
  293. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +56 -60
  294. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
  295. data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
  296. data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
  297. data/src/core/lib/security/transport/security_handshaker.cc +33 -32
  298. data/src/core/lib/security/transport/server_auth_filter.cc +19 -13
  299. data/src/core/lib/security/transport/tsi_error.cc +2 -1
  300. data/src/core/lib/security/transport/tsi_error.h +2 -1
  301. data/src/core/lib/security/util/json_util.cc +2 -2
  302. data/src/core/lib/security/util/json_util.h +1 -1
  303. data/src/core/lib/surface/call.cc +46 -45
  304. data/src/core/lib/surface/call.h +2 -2
  305. data/src/core/lib/surface/channel.cc +6 -6
  306. data/src/core/lib/surface/channel.h +3 -2
  307. data/src/core/lib/surface/channel_ping.cc +1 -1
  308. data/src/core/lib/surface/completion_queue.cc +46 -47
  309. data/src/core/lib/surface/completion_queue.h +2 -1
  310. data/src/core/lib/surface/lame_client.cc +11 -11
  311. data/src/core/lib/surface/lame_client.h +1 -1
  312. data/src/core/lib/surface/server.cc +28 -22
  313. data/src/core/lib/surface/server.h +16 -15
  314. data/src/core/lib/surface/validate_metadata.cc +7 -7
  315. data/src/core/lib/surface/validate_metadata.h +3 -2
  316. data/src/core/lib/surface/version.cc +4 -2
  317. data/src/core/lib/transport/byte_stream.cc +5 -5
  318. data/src/core/lib/transport/byte_stream.h +8 -8
  319. data/src/core/lib/transport/connectivity_state.cc +1 -1
  320. data/src/core/lib/transport/error_utils.cc +19 -8
  321. data/src/core/lib/transport/error_utils.h +11 -5
  322. data/src/core/lib/transport/metadata_batch.cc +37 -37
  323. data/src/core/lib/transport/metadata_batch.h +19 -18
  324. data/src/core/lib/transport/transport.cc +4 -3
  325. data/src/core/lib/transport/transport.h +4 -4
  326. data/src/core/lib/transport/transport_op_string.cc +5 -5
  327. data/src/core/tsi/alts/crypt/gsec.h +4 -0
  328. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
  329. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
  330. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  331. data/src/core/tsi/ssl_transport_security.cc +32 -14
  332. data/src/core/tsi/ssl_transport_security.h +3 -4
  333. data/src/ruby/bin/math_services_pb.rb +1 -1
  334. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  335. data/src/ruby/lib/grpc/version.rb +1 -1
  336. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  337. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
  338. data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
  339. data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
  340. data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
  341. data/third_party/abseil-cpp/absl/base/config.h +37 -9
  342. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
  343. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
  344. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  345. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
  346. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
  347. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
  348. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
  349. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
  350. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  351. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
  352. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  353. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
  354. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  355. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
  356. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
  357. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
  358. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  359. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  360. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
  361. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  362. data/third_party/abseil-cpp/absl/base/macros.h +11 -0
  363. data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
  364. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  365. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  366. data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
  367. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
  368. data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
  369. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
  370. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
  371. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
  372. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  373. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
  374. data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
  375. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
  376. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
  377. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
  378. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
  379. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
  380. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
  381. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
  382. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
  383. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
  384. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  385. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  386. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
  387. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
  388. data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
  389. data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
  390. data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
  391. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  392. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
  393. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  394. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  395. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  396. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
  397. data/third_party/abseil-cpp/absl/status/status.cc +29 -22
  398. data/third_party/abseil-cpp/absl/status/status.h +81 -20
  399. data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
  400. data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
  401. data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
  402. data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
  403. data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
  404. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
  405. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
  406. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
  407. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  408. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
  409. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
  410. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
  411. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
  412. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
  413. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
  414. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
  415. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
  416. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
  417. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
  418. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
  419. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
  420. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
  421. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  422. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  423. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  424. data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
  425. data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
  426. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  427. data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
  428. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  429. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
  430. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
  431. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
  432. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
  433. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
  434. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
  435. data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
  436. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  437. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  438. data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
  439. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
  440. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
  441. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
  442. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  443. data/third_party/abseil-cpp/absl/time/time.h +26 -24
  444. data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
  445. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  446. data/third_party/boringssl-with-bazel/err_data.c +477 -461
  447. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
  448. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +1 -1
  449. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
  450. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
  451. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
  452. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
  453. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
  454. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  455. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
  456. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  457. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  458. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  459. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
  460. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +11 -3
  461. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
  462. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  463. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +4 -43
  464. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
  465. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
  466. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  467. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
  468. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  469. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +43 -46
  470. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
  471. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  472. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  473. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  474. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  475. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  476. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  477. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
  478. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  479. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
  480. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +45 -48
  481. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
  482. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
  483. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +103 -42
  484. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +58 -37
  485. data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
  486. data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
  487. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
  488. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +1 -1
  489. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
  490. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
  491. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  492. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
  493. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  494. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
  495. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -2
  496. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -89
  497. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
  498. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
  499. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
  501. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
  502. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  503. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  504. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
  505. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
  506. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
  507. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -3
  508. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
  509. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -0
  510. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -8
  511. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
  512. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
  513. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -0
  514. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  515. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -38
  516. data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
  517. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
  518. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
  519. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
  520. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
  521. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +185 -17
  522. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
  523. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +416 -121
  524. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -0
  525. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
  526. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
  527. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
  528. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +43 -12
  529. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +149 -8
  530. data/third_party/boringssl-with-bazel/src/ssl/internal.h +220 -46
  531. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
  532. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  533. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
  534. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +74 -15
  535. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +98 -64
  536. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
  537. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +205 -100
  538. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  539. metadata +68 -45
  540. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
  541. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  542. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
  543. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
  544. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
@@ -73,7 +73,7 @@ static const size_t kSizeTWithoutLower4Bits = (size_t) -16;
73
73
 
74
74
  #if defined(GHASH_ASM_X86_64) || defined(GHASH_ASM_X86)
75
75
  static inline void gcm_reduce_1bit(u128 *V) {
76
- if (sizeof(size_t) == 8) {
76
+ if (sizeof(crypto_word_t) == 8) {
77
77
  uint64_t T = UINT64_C(0xe100000000000000) & (0 - (V->hi & 1));
78
78
  V->hi = (V->lo << 63) | (V->hi >> 1);
79
79
  V->lo = (V->lo >> 1) ^ T;
@@ -377,9 +377,10 @@ int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx, const AES_KEY *key,
377
377
  (*block)(ctx->Yi.c, ctx->EKi.c, key);
378
378
  ++ctr;
379
379
  ctx->Yi.d[3] = CRYPTO_bswap4(ctr);
380
- for (size_t i = 0; i < 16; i += sizeof(size_t)) {
381
- store_word_le(out + i,
382
- load_word_le(in + i) ^ ctx->EKi.t[i / sizeof(size_t)]);
380
+ for (size_t i = 0; i < 16; i += sizeof(crypto_word_t)) {
381
+ CRYPTO_store_word_le(out + i,
382
+ CRYPTO_load_word_le(in + i) ^
383
+ ctx->EKi.t[i / sizeof(crypto_word_t)]);
383
384
  }
384
385
  out += 16;
385
386
  in += 16;
@@ -394,9 +395,10 @@ int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx, const AES_KEY *key,
394
395
  (*block)(ctx->Yi.c, ctx->EKi.c, key);
395
396
  ++ctr;
396
397
  ctx->Yi.d[3] = CRYPTO_bswap4(ctr);
397
- for (size_t i = 0; i < 16; i += sizeof(size_t)) {
398
- store_word_le(out + i,
399
- load_word_le(in + i) ^ ctx->EKi.t[i / sizeof(size_t)]);
398
+ for (size_t i = 0; i < 16; i += sizeof(crypto_word_t)) {
399
+ CRYPTO_store_word_le(out + i,
400
+ CRYPTO_load_word_le(in + i) ^
401
+ ctx->EKi.t[i / sizeof(crypto_word_t)]);
400
402
  }
401
403
  out += 16;
402
404
  in += 16;
@@ -468,9 +470,10 @@ int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx, const AES_KEY *key,
468
470
  (*block)(ctx->Yi.c, ctx->EKi.c, key);
469
471
  ++ctr;
470
472
  ctx->Yi.d[3] = CRYPTO_bswap4(ctr);
471
- for (size_t i = 0; i < 16; i += sizeof(size_t)) {
472
- store_word_le(out + i,
473
- load_word_le(in + i) ^ ctx->EKi.t[i / sizeof(size_t)]);
473
+ for (size_t i = 0; i < 16; i += sizeof(crypto_word_t)) {
474
+ CRYPTO_store_word_le(out + i,
475
+ CRYPTO_load_word_le(in + i) ^
476
+ ctx->EKi.t[i / sizeof(crypto_word_t)]);
474
477
  }
475
478
  out += 16;
476
479
  in += 16;
@@ -485,9 +488,10 @@ int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx, const AES_KEY *key,
485
488
  (*block)(ctx->Yi.c, ctx->EKi.c, key);
486
489
  ++ctr;
487
490
  ctx->Yi.d[3] = CRYPTO_bswap4(ctr);
488
- for (size_t i = 0; i < 16; i += sizeof(size_t)) {
489
- store_word_le(out + i,
490
- load_word_le(in + i) ^ ctx->EKi.t[i / sizeof(size_t)]);
491
+ for (size_t i = 0; i < 16; i += sizeof(crypto_word_t)) {
492
+ CRYPTO_store_word_le(out + i,
493
+ CRYPTO_load_word_le(in + i) ^
494
+ ctx->EKi.t[i / sizeof(crypto_word_t)]);
491
495
  }
492
496
  out += 16;
493
497
  in += 16;
@@ -64,27 +64,6 @@ extern "C" {
64
64
  #endif
65
65
 
66
66
 
67
- static inline uint32_t GETU32(const void *in) {
68
- uint32_t v;
69
- OPENSSL_memcpy(&v, in, sizeof(v));
70
- return CRYPTO_bswap4(v);
71
- }
72
-
73
- static inline void PUTU32(void *out, uint32_t v) {
74
- v = CRYPTO_bswap4(v);
75
- OPENSSL_memcpy(out, &v, sizeof(v));
76
- }
77
-
78
- static inline size_t load_word_le(const void *in) {
79
- size_t v;
80
- OPENSSL_memcpy(&v, in, sizeof(v));
81
- return v;
82
- }
83
-
84
- static inline void store_word_le(void *out, size_t v) {
85
- OPENSSL_memcpy(out, &v, sizeof(v));
86
- }
87
-
88
67
  // block128_f is the type of an AES block cipher implementation.
89
68
  //
90
69
  // Unlike upstream OpenSSL, it and the other functions in this file hard-code
@@ -171,7 +150,7 @@ typedef struct {
171
150
  uint64_t u[2];
172
151
  uint32_t d[4];
173
152
  uint8_t c[16];
174
- size_t t[16 / sizeof(size_t)];
153
+ crypto_word_t t[16 / sizeof(crypto_word_t)];
175
154
  } Yi, EKi, EK0, len, Xi;
176
155
 
177
156
  // Note that the order of |Xi| and |gcm_key| is fixed by the MOVBE-based,
@@ -60,7 +60,8 @@ OPENSSL_STATIC_ASSERT(16 % sizeof(size_t) == 0,
60
60
  void CRYPTO_ofb128_encrypt(const uint8_t *in, uint8_t *out, size_t len,
61
61
  const AES_KEY *key, uint8_t ivec[16], unsigned *num,
62
62
  block128_f block) {
63
- assert(in && out && key && ivec && num);
63
+ assert(key != NULL && ivec != NULL && num != NULL);
64
+ assert(len == 0 || (in != NULL && out != NULL));
64
65
 
65
66
  unsigned n = *num;
66
67
 
@@ -62,6 +62,15 @@
62
62
  #include <sys/random.h>
63
63
  #endif
64
64
 
65
+ #if defined(OPENSSL_FREEBSD)
66
+ #define URANDOM_BLOCKS_FOR_ENTROPY
67
+ #if __FreeBSD__ >= 12
68
+ // getrandom is supported in FreeBSD 12 and up.
69
+ #define FREEBSD_GETRANDOM
70
+ #include <sys/random.h>
71
+ #endif
72
+ #endif
73
+
65
74
  #include <openssl/thread.h>
66
75
  #include <openssl/mem.h>
67
76
 
@@ -176,6 +185,11 @@ static void init_once(void) {
176
185
  }
177
186
  #endif
178
187
 
188
+ #if defined(FREEBSD_GETRANDOM)
189
+ *urandom_fd_bss_get() = kHaveGetrandom;
190
+ return;
191
+ #endif
192
+
179
193
  // Android FIPS builds must support getrandom.
180
194
  #if defined(BORINGSSL_FIPS) && defined(OPENSSL_ANDROID)
181
195
  perror("getrandom not found");
@@ -256,11 +270,11 @@ static void wait_for_entropy(void) {
256
270
  return;
257
271
  }
258
272
 
259
- #if defined(BORINGSSL_FIPS)
260
- // In FIPS mode we ensure that the kernel has sufficient entropy before
261
- // continuing. This is automatically handled by getrandom, which requires
262
- // that the entropy pool has been initialised, but for urandom we have to
263
- // poll.
273
+ #if defined(BORINGSSL_FIPS) && !defined(URANDOM_BLOCKS_FOR_ENTROPY)
274
+ // In FIPS mode on platforms where urandom doesn't block at startup, we ensure
275
+ // that the kernel has sufficient entropy before continuing. This is
276
+ // automatically handled by getrandom, which requires that the entropy pool
277
+ // has been initialised, but for urandom we have to poll.
264
278
  for (;;) {
265
279
  int entropy_bits;
266
280
  if (ioctl(fd, RNDGETENTCNT, &entropy_bits)) {
@@ -277,7 +291,7 @@ static void wait_for_entropy(void) {
277
291
 
278
292
  usleep(250000);
279
293
  }
280
- #endif // BORINGSSL_FIPS
294
+ #endif // BORINGSSL_FIPS && !URANDOM_BLOCKS_FOR_ENTROPY
281
295
  }
282
296
 
283
297
  // fill_with_entropy writes |len| bytes of entropy into |out|. It returns one
@@ -291,11 +305,14 @@ static int fill_with_entropy(uint8_t *out, size_t len, int block, int seed) {
291
305
  return 1;
292
306
  }
293
307
 
294
- #if defined(USE_NR_getrandom)
308
+ #if defined(USE_NR_getrandom) || defined(FREEBSD_GETRANDOM)
295
309
  int getrandom_flags = 0;
296
310
  if (!block) {
297
311
  getrandom_flags |= GRND_NONBLOCK;
298
312
  }
313
+ #endif
314
+
315
+ #if defined (USE_NR_getrandom)
299
316
  if (seed) {
300
317
  getrandom_flags |= *extra_getrandom_flags_for_seed_bss_get();
301
318
  }
@@ -315,6 +332,8 @@ static int fill_with_entropy(uint8_t *out, size_t len, int block, int seed) {
315
332
  if (*urandom_fd_bss_get() == kHaveGetrandom) {
316
333
  #if defined(USE_NR_getrandom)
317
334
  r = boringssl_getrandom(out, len, getrandom_flags);
335
+ #elif defined(FREEBSD_GETRANDOM)
336
+ r = getrandom(out, len, getrandom_flags);
318
337
  #elif defined(OPENSSL_MACOS)
319
338
  if (__builtin_available(macos 10.12, *)) {
320
339
  // |getentropy| can only request 256 bytes at a time.
@@ -0,0 +1,79 @@
1
+ /* Copyright (c) 2017, 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/crypto.h>
16
+
17
+ #include "../../internal.h"
18
+ #include "../delocate.h"
19
+
20
+
21
+ int FIPS_mode(void) {
22
+ #if defined(BORINGSSL_FIPS) && !defined(OPENSSL_ASAN)
23
+ return 1;
24
+ #else
25
+ return 0;
26
+ #endif
27
+ }
28
+
29
+ int FIPS_mode_set(int on) { return on == FIPS_mode(); }
30
+
31
+ #if defined(BORINGSSL_FIPS_COUNTERS)
32
+
33
+ size_t FIPS_read_counter(enum fips_counter_t counter) {
34
+ if (counter < 0 || counter > fips_counter_max) {
35
+ abort();
36
+ }
37
+
38
+ const size_t *array =
39
+ CRYPTO_get_thread_local(OPENSSL_THREAD_LOCAL_FIPS_COUNTERS);
40
+ if (!array) {
41
+ return 0;
42
+ }
43
+
44
+ return array[counter];
45
+ }
46
+
47
+ void boringssl_fips_inc_counter(enum fips_counter_t counter) {
48
+ if (counter < 0 || counter > fips_counter_max) {
49
+ abort();
50
+ }
51
+
52
+ size_t *array =
53
+ CRYPTO_get_thread_local(OPENSSL_THREAD_LOCAL_FIPS_COUNTERS);
54
+ if (!array) {
55
+ const size_t num_bytes = sizeof(size_t) * (fips_counter_max + 1);
56
+ array = OPENSSL_malloc(num_bytes);
57
+ if (!array) {
58
+ return;
59
+ }
60
+
61
+ OPENSSL_memset(array, 0, num_bytes);
62
+ if (!CRYPTO_set_thread_local(OPENSSL_THREAD_LOCAL_FIPS_COUNTERS, array,
63
+ OPENSSL_free)) {
64
+ // |OPENSSL_free| has already been called by |CRYPTO_set_thread_local|.
65
+ return;
66
+ }
67
+ }
68
+
69
+ array[counter]++;
70
+ }
71
+
72
+ #else
73
+
74
+ size_t FIPS_read_counter(enum fips_counter_t counter) { return 0; }
75
+
76
+ // boringssl_fips_inc_counter is a no-op, inline function in internal.h in this
77
+ // case. That should let the compiler optimise away the callsites.
78
+
79
+ #endif
@@ -32,13 +32,20 @@
32
32
 
33
33
  #include "../../internal.h"
34
34
  #include "../ec/internal.h"
35
+ #include "../ecdsa/internal.h"
35
36
  #include "../rand/internal.h"
36
37
  #include "../tls/internal.h"
37
38
 
38
39
 
39
40
  // MSVC wants to put a NUL byte at the end of non-char arrays and so cannot
40
- // compile this.
41
- #if !defined(_MSC_VER)
41
+ // compile the real logic.
42
+ #if defined(_MSC_VER)
43
+
44
+ int BORINGSSL_self_test(void) {
45
+ return 0;
46
+ }
47
+
48
+ #else
42
49
 
43
50
  #if defined(BORINGSSL_FIPS) && defined(OPENSSL_ANDROID)
44
51
  // FIPS builds on Android will test for flag files, named after the module hash,
@@ -727,14 +734,12 @@ int boringssl_fips_self_test(
727
734
  // ECDSA Sign/Verify KAT
728
735
 
729
736
  // The 'k' value for ECDSA is fixed to avoid an entropy draw.
730
- ec_key->fixed_k = BN_new();
731
- if (ec_key->fixed_k == NULL ||
732
- !BN_set_word(ec_key->fixed_k, 42)) {
733
- fprintf(stderr, "Out of memory\n");
734
- goto err;
735
- }
737
+ uint8_t ecdsa_k[32] = {0};
738
+ ecdsa_k[31] = 42;
736
739
 
737
- sig = ECDSA_do_sign(kPlaintextSHA256, sizeof(kPlaintextSHA256), ec_key);
740
+ sig = ecdsa_sign_with_nonce_for_known_answer_test(
741
+ kPlaintextSHA256, sizeof(kPlaintextSHA256), ec_key, ecdsa_k,
742
+ sizeof(ecdsa_k));
738
743
 
739
744
  uint8_t ecdsa_r_bytes[sizeof(kECDSASigR)];
740
745
  uint8_t ecdsa_s_bytes[sizeof(kECDSASigS)];
@@ -88,19 +88,18 @@ uint8_t *SHA1(const uint8_t *data, size_t len, uint8_t out[SHA_DIGEST_LENGTH]) {
88
88
  #define HASH_CTX SHA_CTX
89
89
  #define HASH_CBLOCK 64
90
90
  #define HASH_DIGEST_LENGTH 20
91
- #define HASH_MAKE_STRING(c, s) \
92
- do { \
93
- uint32_t ll; \
94
- ll = (c)->h[0]; \
95
- HOST_l2c(ll, (s)); \
96
- ll = (c)->h[1]; \
97
- HOST_l2c(ll, (s)); \
98
- ll = (c)->h[2]; \
99
- HOST_l2c(ll, (s)); \
100
- ll = (c)->h[3]; \
101
- HOST_l2c(ll, (s)); \
102
- ll = (c)->h[4]; \
103
- HOST_l2c(ll, (s)); \
91
+ #define HASH_MAKE_STRING(c, s) \
92
+ do { \
93
+ CRYPTO_store_u32_be((s), (c)->h[0]); \
94
+ (s) += 4; \
95
+ CRYPTO_store_u32_be((s), (c)->h[1]); \
96
+ (s) += 4; \
97
+ CRYPTO_store_u32_be((s), (c)->h[2]); \
98
+ (s) += 4; \
99
+ CRYPTO_store_u32_be((s), (c)->h[3]); \
100
+ (s) += 4; \
101
+ CRYPTO_store_u32_be((s), (c)->h[4]); \
102
+ (s) += 4; \
104
103
  } while (0)
105
104
 
106
105
  #define HASH_UPDATE SHA1_Update
@@ -193,7 +192,7 @@ static void sha1_block_data_order(uint32_t *state, const uint8_t *data,
193
192
  #if !defined(SHA1_ASM)
194
193
  static void sha1_block_data_order(uint32_t *state, const uint8_t *data,
195
194
  size_t num) {
196
- register uint32_t A, B, C, D, E, T, l;
195
+ register uint32_t A, B, C, D, E, T;
197
196
  uint32_t XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7, XX8, XX9, XX10,
198
197
  XX11, XX12, XX13, XX14, XX15;
199
198
 
@@ -204,52 +203,52 @@ static void sha1_block_data_order(uint32_t *state, const uint8_t *data,
204
203
  E = state[4];
205
204
 
206
205
  for (;;) {
207
- HOST_c2l(data, l);
208
- X(0) = l;
209
- HOST_c2l(data, l);
210
- X(1) = l;
206
+ X(0) = CRYPTO_load_u32_be(data);
207
+ data += 4;
208
+ X(1) = CRYPTO_load_u32_be(data);
209
+ data += 4;
211
210
  BODY_00_15(0, A, B, C, D, E, T, X(0));
212
- HOST_c2l(data, l);
213
- X(2) = l;
211
+ X(2) = CRYPTO_load_u32_be(data);
212
+ data += 4;
214
213
  BODY_00_15(1, T, A, B, C, D, E, X(1));
215
- HOST_c2l(data, l);
216
- X(3) = l;
214
+ X(3) = CRYPTO_load_u32_be(data);
215
+ data += 4;
217
216
  BODY_00_15(2, E, T, A, B, C, D, X(2));
218
- HOST_c2l(data, l);
219
- X(4) = l;
217
+ X(4) = CRYPTO_load_u32_be(data);
218
+ data += 4;
220
219
  BODY_00_15(3, D, E, T, A, B, C, X(3));
221
- HOST_c2l(data, l);
222
- X(5) = l;
220
+ X(5) = CRYPTO_load_u32_be(data);
221
+ data += 4;
223
222
  BODY_00_15(4, C, D, E, T, A, B, X(4));
224
- HOST_c2l(data, l);
225
- X(6) = l;
223
+ X(6) = CRYPTO_load_u32_be(data);
224
+ data += 4;
226
225
  BODY_00_15(5, B, C, D, E, T, A, X(5));
227
- HOST_c2l(data, l);
228
- X(7) = l;
226
+ X(7) = CRYPTO_load_u32_be(data);
227
+ data += 4;
229
228
  BODY_00_15(6, A, B, C, D, E, T, X(6));
230
- HOST_c2l(data, l);
231
- X(8) = l;
229
+ X(8) = CRYPTO_load_u32_be(data);
230
+ data += 4;
232
231
  BODY_00_15(7, T, A, B, C, D, E, X(7));
233
- HOST_c2l(data, l);
234
- X(9) = l;
232
+ X(9) = CRYPTO_load_u32_be(data);
233
+ data += 4;
235
234
  BODY_00_15(8, E, T, A, B, C, D, X(8));
236
- HOST_c2l(data, l);
237
- X(10) = l;
235
+ X(10) = CRYPTO_load_u32_be(data);
236
+ data += 4;
238
237
  BODY_00_15(9, D, E, T, A, B, C, X(9));
239
- HOST_c2l(data, l);
240
- X(11) = l;
238
+ X(11) = CRYPTO_load_u32_be(data);
239
+ data += 4;
241
240
  BODY_00_15(10, C, D, E, T, A, B, X(10));
242
- HOST_c2l(data, l);
243
- X(12) = l;
241
+ X(12) = CRYPTO_load_u32_be(data);
242
+ data += 4;
244
243
  BODY_00_15(11, B, C, D, E, T, A, X(11));
245
- HOST_c2l(data, l);
246
- X(13) = l;
244
+ X(13) = CRYPTO_load_u32_be(data);
245
+ data += 4;
247
246
  BODY_00_15(12, A, B, C, D, E, T, X(12));
248
- HOST_c2l(data, l);
249
- X(14) = l;
247
+ X(14) = CRYPTO_load_u32_be(data);
248
+ data += 4;
250
249
  BODY_00_15(13, T, A, B, C, D, E, X(13));
251
- HOST_c2l(data, l);
252
- X(15) = l;
250
+ X(15) = CRYPTO_load_u32_be(data);
251
+ data += 4;
253
252
  BODY_00_15(14, E, T, A, B, C, D, X(14));
254
253
  BODY_00_15(15, D, E, T, A, B, C, X(15));
255
254
 
@@ -367,5 +366,3 @@ static void sha1_block_data_order(uint32_t *state, const uint8_t *data,
367
366
  #undef BODY_40_59
368
367
  #undef BODY_60_79
369
368
  #undef X
370
- #undef HOST_c2l
371
- #undef HOST_l2c
@@ -139,19 +139,18 @@ int SHA224_Final(uint8_t out[SHA224_DIGEST_LENGTH], SHA256_CTX *ctx) {
139
139
  // hash 'final' function can fail. This should never happen.
140
140
  #define HASH_MAKE_STRING(c, s) \
141
141
  do { \
142
- uint32_t ll; \
143
142
  unsigned int nn; \
144
143
  switch ((c)->md_len) { \
145
144
  case SHA224_DIGEST_LENGTH: \
146
145
  for (nn = 0; nn < SHA224_DIGEST_LENGTH / 4; nn++) { \
147
- ll = (c)->h[nn]; \
148
- HOST_l2c(ll, (s)); \
146
+ CRYPTO_store_u32_be((s), (c)->h[nn]); \
147
+ (s) += 4; \
149
148
  } \
150
149
  break; \
151
150
  case SHA256_DIGEST_LENGTH: \
152
151
  for (nn = 0; nn < SHA256_DIGEST_LENGTH / 4; nn++) { \
153
- ll = (c)->h[nn]; \
154
- HOST_l2c(ll, (s)); \
152
+ CRYPTO_store_u32_be((s), (c)->h[nn]); \
153
+ (s) += 4; \
155
154
  } \
156
155
  break; \
157
156
  default: \
@@ -159,8 +158,8 @@ int SHA224_Final(uint8_t out[SHA224_DIGEST_LENGTH], SHA256_CTX *ctx) {
159
158
  return 0; \
160
159
  } \
161
160
  for (nn = 0; nn < (c)->md_len / 4; nn++) { \
162
- ll = (c)->h[nn]; \
163
- HOST_l2c(ll, (s)); \
161
+ CRYPTO_store_u32_be((s), (c)->h[nn]); \
162
+ (s) += 4; \
164
163
  } \
165
164
  break; \
166
165
  } \
@@ -241,55 +240,53 @@ static void sha256_block_data_order(uint32_t *state, const uint8_t *data,
241
240
  g = state[6];
242
241
  h = state[7];
243
242
 
244
- uint32_t l;
245
-
246
- HOST_c2l(data, l);
247
- T1 = X[0] = l;
243
+ T1 = X[0] = CRYPTO_load_u32_be(data);
244
+ data += 4;
248
245
  ROUND_00_15(0, a, b, c, d, e, f, g, h);
249
- HOST_c2l(data, l);
250
- T1 = X[1] = l;
246
+ T1 = X[1] = CRYPTO_load_u32_be(data);
247
+ data += 4;
251
248
  ROUND_00_15(1, h, a, b, c, d, e, f, g);
252
- HOST_c2l(data, l);
253
- T1 = X[2] = l;
249
+ T1 = X[2] = CRYPTO_load_u32_be(data);
250
+ data += 4;
254
251
  ROUND_00_15(2, g, h, a, b, c, d, e, f);
255
- HOST_c2l(data, l);
256
- T1 = X[3] = l;
252
+ T1 = X[3] = CRYPTO_load_u32_be(data);
253
+ data += 4;
257
254
  ROUND_00_15(3, f, g, h, a, b, c, d, e);
258
- HOST_c2l(data, l);
259
- T1 = X[4] = l;
255
+ T1 = X[4] = CRYPTO_load_u32_be(data);
256
+ data += 4;
260
257
  ROUND_00_15(4, e, f, g, h, a, b, c, d);
261
- HOST_c2l(data, l);
262
- T1 = X[5] = l;
258
+ T1 = X[5] = CRYPTO_load_u32_be(data);
259
+ data += 4;
263
260
  ROUND_00_15(5, d, e, f, g, h, a, b, c);
264
- HOST_c2l(data, l);
265
- T1 = X[6] = l;
261
+ T1 = X[6] = CRYPTO_load_u32_be(data);
262
+ data += 4;
266
263
  ROUND_00_15(6, c, d, e, f, g, h, a, b);
267
- HOST_c2l(data, l);
268
- T1 = X[7] = l;
264
+ T1 = X[7] = CRYPTO_load_u32_be(data);
265
+ data += 4;
269
266
  ROUND_00_15(7, b, c, d, e, f, g, h, a);
270
- HOST_c2l(data, l);
271
- T1 = X[8] = l;
267
+ T1 = X[8] = CRYPTO_load_u32_be(data);
268
+ data += 4;
272
269
  ROUND_00_15(8, a, b, c, d, e, f, g, h);
273
- HOST_c2l(data, l);
274
- T1 = X[9] = l;
270
+ T1 = X[9] = CRYPTO_load_u32_be(data);
271
+ data += 4;
275
272
  ROUND_00_15(9, h, a, b, c, d, e, f, g);
276
- HOST_c2l(data, l);
277
- T1 = X[10] = l;
273
+ T1 = X[10] = CRYPTO_load_u32_be(data);
274
+ data += 4;
278
275
  ROUND_00_15(10, g, h, a, b, c, d, e, f);
279
- HOST_c2l(data, l);
280
- T1 = X[11] = l;
276
+ T1 = X[11] = CRYPTO_load_u32_be(data);
277
+ data += 4;
281
278
  ROUND_00_15(11, f, g, h, a, b, c, d, e);
282
- HOST_c2l(data, l);
283
- T1 = X[12] = l;
279
+ T1 = X[12] = CRYPTO_load_u32_be(data);
280
+ data += 4;
284
281
  ROUND_00_15(12, e, f, g, h, a, b, c, d);
285
- HOST_c2l(data, l);
286
- T1 = X[13] = l;
282
+ T1 = X[13] = CRYPTO_load_u32_be(data);
283
+ data += 4;
287
284
  ROUND_00_15(13, d, e, f, g, h, a, b, c);
288
- HOST_c2l(data, l);
289
- T1 = X[14] = l;
285
+ T1 = X[14] = CRYPTO_load_u32_be(data);
286
+ data += 4;
290
287
  ROUND_00_15(14, c, d, e, f, g, h, a, b);
291
- HOST_c2l(data, l);
292
- T1 = X[15] = l;
288
+ T1 = X[15] = CRYPTO_load_u32_be(data);
289
+ data += 4;
293
290
  ROUND_00_15(15, b, c, d, e, f, g, h, a);
294
291
 
295
292
  for (i = 16; i < 64; i += 8) {
@@ -339,5 +336,3 @@ void SHA256_TransformBlocks(uint32_t state[8], const uint8_t *data,
339
336
  #undef Maj
340
337
  #undef ROUND_00_15
341
338
  #undef ROUND_16_63
342
- #undef HOST_c2l
343
- #undef HOST_l2c