grpc 1.24.0 → 1.25.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 (505) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +306 -243
  3. data/etc/roots.pem +0 -100
  4. data/include/grpc/grpc_security.h +44 -18
  5. data/include/grpc/impl/codegen/grpc_types.h +15 -0
  6. data/include/grpc/impl/codegen/port_platform.h +27 -11
  7. data/include/grpc/impl/codegen/sync_generic.h +1 -1
  8. data/src/boringssl/err_data.c +695 -650
  9. data/src/core/ext/filters/client_channel/client_channel.cc +257 -179
  10. data/src/core/ext/filters/client_channel/client_channel.h +24 -0
  11. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +2 -3
  12. data/src/core/ext/filters/client_channel/client_channel_factory.h +1 -5
  13. data/src/core/ext/filters/client_channel/health/health_check_client.cc +18 -45
  14. data/src/core/ext/filters/client_channel/health/health_check_client.h +5 -13
  15. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  16. data/src/core/ext/filters/client_channel/lb_policy.cc +2 -3
  17. data/src/core/ext/filters/client_channel/lb_policy.h +65 -55
  18. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -14
  19. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +113 -36
  20. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +14 -19
  21. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +36 -13
  22. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +3 -10
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +814 -1589
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +2 -5
  25. data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -6
  26. data/src/core/ext/filters/client_channel/resolver.cc +1 -2
  27. data/src/core/ext/filters/client_channel/resolver.h +8 -16
  28. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +25 -8
  29. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +46 -12
  30. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +10 -17
  31. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +7 -8
  32. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
  33. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +111 -44
  34. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +22 -14
  35. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  36. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +2 -2
  37. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +29 -10
  38. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +27 -36
  39. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +7 -10
  40. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +60 -16
  41. data/src/core/ext/filters/client_channel/resolver_factory.h +4 -8
  42. data/src/core/ext/filters/client_channel/resolver_registry.cc +1 -1
  43. data/src/core/ext/filters/client_channel/resolver_registry.h +1 -1
  44. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -10
  45. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +7 -8
  46. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +1 -1
  47. data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -5
  48. data/src/core/ext/filters/client_channel/retry_throttle.h +1 -4
  49. data/src/core/ext/filters/client_channel/service_config.h +8 -8
  50. data/src/core/ext/filters/client_channel/subchannel.cc +53 -86
  51. data/src/core/ext/filters/client_channel/subchannel.h +7 -9
  52. data/src/core/ext/filters/client_channel/subchannel_interface.h +9 -13
  53. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +3 -6
  54. data/src/core/ext/filters/client_channel/{lb_policy/xds/xds_load_balancer_api.cc → xds/xds_api.cc} +169 -52
  55. data/src/core/ext/filters/client_channel/xds/xds_api.h +171 -0
  56. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +450 -0
  57. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +99 -0
  58. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel.h +8 -6
  59. data/src/core/ext/filters/client_channel/xds/xds_channel_args.h +26 -0
  60. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel_secure.cc +28 -11
  61. data/src/core/ext/filters/client_channel/xds/xds_client.cc +1413 -0
  62. data/src/core/ext/filters/client_channel/xds/xds_client.h +221 -0
  63. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.cc +1 -5
  64. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.h +3 -4
  65. data/src/core/ext/filters/deadline/deadline_filter.cc +20 -20
  66. data/src/core/ext/filters/http/client/http_client_filter.cc +15 -15
  67. data/src/core/ext/filters/http/client_authority_filter.cc +14 -14
  68. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +12 -12
  69. data/src/core/ext/filters/max_age/max_age_filter.cc +59 -50
  70. data/src/core/ext/filters/message_size/message_size_filter.cc +18 -18
  71. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -14
  72. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +233 -175
  73. data/src/core/ext/transport/chttp2/transport/flow_control.h +21 -24
  74. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +253 -163
  75. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +24 -12
  76. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -3
  77. data/src/core/ext/transport/chttp2/transport/internal.h +13 -15
  78. data/src/core/ext/transport/chttp2/transport/writing.cc +3 -0
  79. data/src/core/ext/transport/inproc/inproc_transport.cc +20 -13
  80. data/src/core/lib/channel/channel_args.cc +16 -0
  81. data/src/core/lib/channel/channel_args.h +22 -0
  82. data/src/core/lib/channel/channelz.cc +5 -6
  83. data/src/core/lib/channel/channelz.h +1 -1
  84. data/src/core/lib/channel/connected_channel.cc +20 -20
  85. data/src/core/lib/channel/handshaker.h +3 -4
  86. data/src/core/lib/channel/handshaker_factory.h +1 -3
  87. data/src/core/lib/debug/trace.h +3 -2
  88. data/src/core/lib/gprpp/arena.cc +3 -3
  89. data/src/core/lib/gprpp/arena.h +2 -3
  90. data/src/core/lib/gprpp/inlined_vector.h +9 -0
  91. data/src/core/lib/gprpp/map.h +3 -501
  92. data/src/core/lib/gprpp/memory.h +45 -41
  93. data/src/core/lib/gprpp/mpscq.cc +108 -0
  94. data/src/core/lib/gprpp/mpscq.h +98 -0
  95. data/src/core/lib/gprpp/orphanable.h +6 -11
  96. data/src/core/lib/gprpp/ref_counted.h +25 -19
  97. data/src/core/lib/gprpp/set.h +33 -0
  98. data/src/core/lib/gprpp/thd.h +2 -4
  99. data/src/core/lib/http/httpcli.cc +1 -1
  100. data/src/core/lib/http/httpcli_security_connector.cc +15 -11
  101. data/src/core/lib/http/parser.cc +1 -1
  102. data/src/core/lib/iomgr/buffer_list.cc +4 -5
  103. data/src/core/lib/iomgr/buffer_list.h +5 -6
  104. data/src/core/lib/iomgr/call_combiner.cc +4 -5
  105. data/src/core/lib/iomgr/call_combiner.h +2 -2
  106. data/src/core/lib/iomgr/cfstream_handle.h +3 -5
  107. data/src/core/lib/iomgr/closure.h +8 -3
  108. data/src/core/lib/iomgr/combiner.cc +45 -82
  109. data/src/core/lib/iomgr/combiner.h +32 -8
  110. data/src/core/lib/iomgr/endpoint_cfstream.cc +5 -3
  111. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -15
  112. data/src/core/lib/iomgr/ev_poll_posix.cc +3 -1
  113. data/src/core/lib/iomgr/exec_ctx.h +4 -3
  114. data/src/core/lib/iomgr/executor.cc +4 -2
  115. data/src/core/lib/iomgr/executor.h +3 -0
  116. data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -6
  117. data/src/core/lib/iomgr/executor/threadpool.cc +1 -2
  118. data/src/core/lib/iomgr/executor/threadpool.h +7 -11
  119. data/src/core/lib/iomgr/resource_quota.cc +55 -51
  120. data/src/core/lib/iomgr/resource_quota.h +13 -9
  121. data/src/core/lib/iomgr/socket_utils_common_posix.cc +13 -0
  122. data/src/core/lib/iomgr/socket_utils_posix.h +4 -0
  123. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -11
  124. data/src/core/lib/iomgr/tcp_custom.cc +9 -7
  125. data/src/core/lib/iomgr/tcp_posix.cc +20 -16
  126. data/src/core/lib/iomgr/tcp_server.h +1 -4
  127. data/src/core/lib/iomgr/tcp_server_custom.cc +5 -5
  128. data/src/core/lib/iomgr/tcp_server_posix.cc +1 -1
  129. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -11
  130. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  131. data/src/core/lib/iomgr/udp_server.cc +3 -2
  132. data/src/core/lib/iomgr/udp_server.h +6 -12
  133. data/src/core/lib/json/json.h +1 -1
  134. data/src/core/lib/json/json_string.cc +2 -2
  135. data/src/core/lib/profiling/basic_timers.cc +2 -2
  136. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -2
  137. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -1
  138. data/src/core/lib/security/credentials/credentials.h +4 -20
  139. data/src/core/lib/security/credentials/fake/fake_credentials.cc +4 -4
  140. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -3
  141. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +64 -0
  142. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +4 -4
  143. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -7
  144. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +2 -0
  145. data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -4
  146. data/src/core/lib/security/security_connector/security_connector.cc +1 -0
  147. data/src/core/lib/security/security_connector/security_connector.h +19 -17
  148. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +8 -5
  149. data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
  150. data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
  151. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +14 -6
  152. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +4 -2
  153. data/src/core/lib/security/transport/client_auth_filter.cc +17 -17
  154. data/src/core/lib/security/transport/security_handshaker.cc +29 -13
  155. data/src/core/lib/security/transport/security_handshaker.h +4 -2
  156. data/src/core/lib/security/transport/server_auth_filter.cc +14 -14
  157. data/src/core/lib/slice/slice.cc +2 -10
  158. data/src/core/lib/slice/slice_hash_table.h +4 -6
  159. data/src/core/lib/slice/slice_intern.cc +42 -39
  160. data/src/core/lib/slice/slice_internal.h +3 -3
  161. data/src/core/lib/slice/slice_utils.h +21 -4
  162. data/src/core/lib/slice/slice_weak_hash_table.h +4 -6
  163. data/src/core/lib/surface/call.cc +3 -3
  164. data/src/core/lib/surface/channel.cc +7 -0
  165. data/src/core/lib/surface/completion_queue.cc +12 -11
  166. data/src/core/lib/surface/completion_queue.h +4 -2
  167. data/src/core/lib/surface/init.cc +1 -0
  168. data/src/core/lib/surface/lame_client.cc +33 -18
  169. data/src/core/lib/surface/server.cc +77 -76
  170. data/src/core/lib/surface/version.cc +1 -1
  171. data/src/core/lib/transport/byte_stream.h +3 -7
  172. data/src/core/lib/transport/connectivity_state.cc +112 -98
  173. data/src/core/lib/transport/connectivity_state.h +100 -50
  174. data/src/core/lib/transport/static_metadata.cc +276 -288
  175. data/src/core/lib/transport/static_metadata.h +73 -76
  176. data/src/core/lib/transport/status_conversion.cc +1 -1
  177. data/src/core/lib/transport/status_metadata.cc +1 -1
  178. data/src/core/lib/transport/transport.cc +2 -2
  179. data/src/core/lib/transport/transport.h +12 -4
  180. data/src/core/lib/transport/transport_op_string.cc +14 -11
  181. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
  182. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +1 -1
  183. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +5 -5
  184. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -2
  185. data/src/core/tsi/fake_transport_security.cc +7 -5
  186. data/src/core/tsi/grpc_shadow_boringssl.h +2918 -2627
  187. data/src/core/tsi/local_transport_security.cc +8 -6
  188. data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -3
  189. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -2
  190. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +7 -5
  191. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -6
  192. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -2
  193. data/src/core/tsi/ssl_transport_security.cc +12 -12
  194. data/src/core/tsi/ssl_transport_security.h +2 -2
  195. data/src/core/tsi/transport_security_grpc.cc +7 -0
  196. data/src/core/tsi/transport_security_grpc.h +6 -0
  197. data/src/ruby/ext/grpc/extconf.rb +1 -0
  198. data/src/ruby/ext/grpc/rb_call.c +1 -1
  199. data/src/ruby/ext/grpc/rb_channel.c +1 -1
  200. data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
  201. data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
  202. data/src/ruby/lib/grpc/version.rb +1 -1
  203. data/src/ruby/spec/google_rpc_status_utils_spec.rb +2 -2
  204. data/third_party/boringssl/crypto/asn1/a_bool.c +18 -5
  205. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +17 -221
  206. data/third_party/boringssl/crypto/asn1/a_dup.c +0 -24
  207. data/third_party/boringssl/crypto/asn1/a_enum.c +2 -2
  208. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +10 -72
  209. data/third_party/boringssl/crypto/asn1/a_int.c +12 -71
  210. data/third_party/boringssl/crypto/asn1/a_mbstr.c +110 -216
  211. data/third_party/boringssl/crypto/asn1/a_object.c +16 -5
  212. data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
  213. data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -1
  214. data/third_party/boringssl/crypto/asn1/tasn_enc.c +3 -1
  215. data/third_party/boringssl/crypto/base64/base64.c +2 -2
  216. data/third_party/boringssl/crypto/bio/bio.c +73 -9
  217. data/third_party/boringssl/crypto/bio/connect.c +4 -0
  218. data/third_party/boringssl/crypto/bio/fd.c +4 -0
  219. data/third_party/boringssl/crypto/bio/file.c +5 -2
  220. data/third_party/boringssl/crypto/bio/socket.c +4 -0
  221. data/third_party/boringssl/crypto/bio/socket_helper.c +4 -0
  222. data/third_party/boringssl/crypto/bn_extra/convert.c +11 -7
  223. data/third_party/boringssl/crypto/bytestring/ber.c +8 -4
  224. data/third_party/boringssl/crypto/bytestring/cbb.c +19 -7
  225. data/third_party/boringssl/crypto/bytestring/cbs.c +28 -15
  226. data/third_party/boringssl/crypto/bytestring/internal.h +28 -7
  227. data/third_party/boringssl/crypto/bytestring/unicode.c +155 -0
  228. data/third_party/boringssl/crypto/chacha/chacha.c +36 -19
  229. data/third_party/boringssl/crypto/chacha/internal.h +45 -0
  230. data/third_party/boringssl/crypto/cipher_extra/cipher_extra.c +29 -0
  231. data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +269 -25
  232. data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +16 -14
  233. data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +54 -38
  234. data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +133 -41
  235. data/third_party/boringssl/crypto/cipher_extra/e_tls.c +23 -15
  236. data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +24 -15
  237. data/third_party/boringssl/crypto/cmac/cmac.c +62 -25
  238. data/third_party/boringssl/crypto/conf/conf.c +7 -0
  239. data/third_party/boringssl/crypto/cpu-arm-linux.c +4 -148
  240. data/third_party/boringssl/crypto/cpu-arm-linux.h +201 -0
  241. data/third_party/boringssl/crypto/cpu-intel.c +45 -51
  242. data/third_party/boringssl/crypto/crypto.c +39 -22
  243. data/third_party/boringssl/crypto/curve25519/spake25519.c +1 -1
  244. data/third_party/boringssl/crypto/dsa/dsa.c +77 -53
  245. data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +20 -8
  246. data/third_party/boringssl/crypto/ec_extra/ec_derive.c +96 -0
  247. data/third_party/boringssl/crypto/{ecdh/ecdh.c → ecdh_extra/ecdh_extra.c} +20 -58
  248. data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +1 -9
  249. data/third_party/boringssl/crypto/engine/engine.c +2 -1
  250. data/third_party/boringssl/crypto/err/err.c +2 -0
  251. data/third_party/boringssl/crypto/err/internal.h +2 -2
  252. data/third_party/boringssl/crypto/evp/evp.c +89 -8
  253. data/third_party/boringssl/crypto/evp/evp_asn1.c +56 -5
  254. data/third_party/boringssl/crypto/evp/evp_ctx.c +52 -14
  255. data/third_party/boringssl/crypto/evp/internal.h +18 -1
  256. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +5 -0
  257. data/third_party/boringssl/crypto/evp/p_ec.c +51 -3
  258. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +6 -7
  259. data/third_party/boringssl/crypto/evp/p_ed25519.c +36 -3
  260. data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +76 -45
  261. data/third_party/boringssl/crypto/evp/p_rsa.c +3 -1
  262. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +5 -0
  263. data/third_party/boringssl/crypto/evp/p_x25519.c +110 -0
  264. data/third_party/boringssl/crypto/evp/p_x25519_asn1.c +249 -0
  265. data/third_party/boringssl/crypto/evp/scrypt.c +6 -2
  266. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +34 -274
  267. data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +161 -21
  268. data/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.c +111 -13
  269. data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +17 -21
  270. data/third_party/boringssl/crypto/fipsmodule/bcm.c +119 -7
  271. data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +19 -2
  272. data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +2 -2
  273. data/third_party/boringssl/crypto/fipsmodule/bn/ctx.c +93 -160
  274. data/third_party/boringssl/crypto/fipsmodule/bn/div.c +48 -57
  275. data/third_party/boringssl/crypto/fipsmodule/bn/div_extra.c +87 -0
  276. data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +143 -211
  277. data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +0 -305
  278. data/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.c +325 -0
  279. data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +168 -50
  280. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +68 -92
  281. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +7 -6
  282. data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +11 -14
  283. data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +358 -443
  284. data/third_party/boringssl/crypto/fipsmodule/bn/random.c +25 -35
  285. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +20 -25
  286. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +76 -5
  287. data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +14 -14
  288. data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +7 -2
  289. data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +383 -516
  290. data/third_party/boringssl/crypto/fipsmodule/cipher/e_des.c +4 -0
  291. data/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +3 -4
  292. data/third_party/boringssl/crypto/fipsmodule/delocate.h +3 -2
  293. data/third_party/boringssl/crypto/fipsmodule/digest/digest.c +32 -17
  294. data/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +3 -3
  295. data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +228 -122
  296. data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +34 -8
  297. data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +311 -98
  298. data/third_party/boringssl/crypto/fipsmodule/ec/felem.c +82 -0
  299. data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +263 -97
  300. data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +22 -59
  301. data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +317 -234
  302. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +9473 -9475
  303. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +313 -109
  304. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +36 -0
  305. data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +96 -0
  306. data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +126 -792
  307. data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +84 -0
  308. data/third_party/boringssl/crypto/fipsmodule/ec/util.c +163 -12
  309. data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +84 -211
  310. data/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.c +122 -0
  311. data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +60 -205
  312. data/third_party/boringssl/crypto/fipsmodule/fips_shared_support.c +32 -0
  313. data/third_party/boringssl/crypto/fipsmodule/is_fips.c +2 -0
  314. data/third_party/boringssl/crypto/fipsmodule/md4/md4.c +3 -1
  315. data/third_party/boringssl/crypto/fipsmodule/md5/internal.h +37 -0
  316. data/third_party/boringssl/crypto/fipsmodule/md5/md5.c +11 -8
  317. data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +35 -79
  318. data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +7 -39
  319. data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +7 -27
  320. data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +123 -309
  321. data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +189 -126
  322. data/third_party/boringssl/crypto/fipsmodule/modes/ofb.c +3 -2
  323. data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +2 -2
  324. data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +35 -0
  325. data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +24 -19
  326. data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +256 -77
  327. data/third_party/boringssl/crypto/fipsmodule/rsa/padding.c +10 -7
  328. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +5 -1
  329. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +131 -14
  330. data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +83 -10
  331. data/third_party/boringssl/crypto/fipsmodule/sha/internal.h +53 -0
  332. data/third_party/boringssl/crypto/fipsmodule/sha/sha1.c +9 -13
  333. data/third_party/boringssl/crypto/fipsmodule/sha/sha256.c +18 -12
  334. data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +95 -168
  335. data/third_party/boringssl/crypto/hrss/hrss.c +2201 -0
  336. data/third_party/boringssl/crypto/hrss/internal.h +62 -0
  337. data/third_party/boringssl/crypto/internal.h +95 -20
  338. data/third_party/boringssl/crypto/lhash/lhash.c +45 -33
  339. data/third_party/boringssl/crypto/mem.c +39 -2
  340. data/third_party/boringssl/crypto/obj/obj.c +4 -4
  341. data/third_party/boringssl/crypto/obj/obj_dat.h +6181 -875
  342. data/third_party/boringssl/crypto/pem/pem_all.c +2 -3
  343. data/third_party/boringssl/crypto/pem/pem_info.c +144 -162
  344. data/third_party/boringssl/crypto/pem/pem_lib.c +53 -52
  345. data/third_party/boringssl/crypto/pem/pem_pkey.c +13 -21
  346. data/third_party/boringssl/crypto/pkcs7/pkcs7.c +15 -22
  347. data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +168 -16
  348. data/third_party/boringssl/crypto/pkcs8/internal.h +11 -0
  349. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +24 -15
  350. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +42 -25
  351. data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +559 -43
  352. data/third_party/boringssl/crypto/pool/internal.h +1 -1
  353. data/third_party/boringssl/crypto/pool/pool.c +21 -0
  354. data/third_party/boringssl/crypto/rand_extra/deterministic.c +8 -0
  355. data/third_party/boringssl/crypto/rand_extra/fuchsia.c +1 -14
  356. data/third_party/boringssl/crypto/refcount_lock.c +2 -2
  357. data/third_party/boringssl/crypto/rsa_extra/rsa_print.c +22 -0
  358. data/third_party/boringssl/crypto/siphash/siphash.c +80 -0
  359. data/third_party/boringssl/crypto/stack/stack.c +83 -32
  360. data/third_party/boringssl/crypto/thread_none.c +2 -2
  361. data/third_party/boringssl/crypto/thread_pthread.c +2 -2
  362. data/third_party/boringssl/crypto/thread_win.c +38 -19
  363. data/third_party/boringssl/crypto/x509/a_strex.c +22 -2
  364. data/third_party/boringssl/crypto/x509/asn1_gen.c +2 -1
  365. data/third_party/boringssl/crypto/x509/by_dir.c +7 -0
  366. data/third_party/boringssl/crypto/x509/by_file.c +12 -10
  367. data/third_party/boringssl/crypto/x509/t_crl.c +5 -8
  368. data/third_party/boringssl/crypto/x509/t_req.c +1 -3
  369. data/third_party/boringssl/crypto/x509/t_x509.c +5 -8
  370. data/third_party/boringssl/crypto/x509/x509_cmp.c +1 -1
  371. data/third_party/boringssl/crypto/x509/x509_def.c +1 -1
  372. data/third_party/boringssl/crypto/x509/x509_lu.c +114 -5
  373. data/third_party/boringssl/crypto/x509/x509_req.c +20 -0
  374. data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
  375. data/third_party/boringssl/crypto/x509/x509_trs.c +1 -0
  376. data/third_party/boringssl/crypto/x509/x509_txt.c +4 -5
  377. data/third_party/boringssl/crypto/x509/x509_vfy.c +145 -138
  378. data/third_party/boringssl/crypto/x509/x509_vpm.c +2 -0
  379. data/third_party/boringssl/crypto/x509/x509cset.c +40 -0
  380. data/third_party/boringssl/crypto/x509/x509name.c +2 -3
  381. data/third_party/boringssl/crypto/x509/x_all.c +109 -210
  382. data/third_party/boringssl/crypto/x509/x_x509.c +6 -0
  383. data/third_party/boringssl/crypto/x509v3/ext_dat.h +1 -3
  384. data/third_party/boringssl/crypto/x509v3/internal.h +56 -0
  385. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -0
  386. data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -0
  387. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +4 -2
  388. data/third_party/boringssl/crypto/x509v3/v3_akey.c +5 -2
  389. data/third_party/boringssl/crypto/x509v3/v3_alt.c +19 -13
  390. data/third_party/boringssl/crypto/x509v3/v3_conf.c +2 -1
  391. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +3 -2
  392. data/third_party/boringssl/crypto/x509v3/v3_genn.c +1 -6
  393. data/third_party/boringssl/crypto/x509v3/v3_lib.c +1 -0
  394. data/third_party/boringssl/crypto/x509v3/v3_ocsp.c +68 -0
  395. data/third_party/boringssl/crypto/x509v3/v3_pci.c +2 -1
  396. data/third_party/boringssl/crypto/x509v3/v3_purp.c +47 -69
  397. data/third_party/boringssl/crypto/x509v3/v3_skey.c +5 -2
  398. data/third_party/boringssl/crypto/x509v3/v3_utl.c +69 -25
  399. data/third_party/boringssl/include/openssl/aead.h +45 -19
  400. data/third_party/boringssl/include/openssl/aes.h +32 -7
  401. data/third_party/boringssl/include/openssl/asn1.h +7 -77
  402. data/third_party/boringssl/include/openssl/base.h +120 -6
  403. data/third_party/boringssl/include/openssl/base64.h +4 -1
  404. data/third_party/boringssl/include/openssl/bio.h +112 -81
  405. data/third_party/boringssl/include/openssl/blowfish.h +3 -3
  406. data/third_party/boringssl/include/openssl/bn.h +55 -29
  407. data/third_party/boringssl/include/openssl/buf.h +2 -2
  408. data/third_party/boringssl/include/openssl/bytestring.h +54 -32
  409. data/third_party/boringssl/include/openssl/cast.h +2 -2
  410. data/third_party/boringssl/include/openssl/cipher.h +46 -16
  411. data/third_party/boringssl/include/openssl/cmac.h +6 -2
  412. data/third_party/boringssl/include/openssl/conf.h +3 -6
  413. data/third_party/boringssl/include/openssl/cpu.h +25 -9
  414. data/third_party/boringssl/include/openssl/crypto.h +32 -10
  415. data/third_party/boringssl/include/openssl/curve25519.h +4 -4
  416. data/third_party/boringssl/include/openssl/dh.h +3 -2
  417. data/third_party/boringssl/include/openssl/digest.h +21 -7
  418. data/third_party/boringssl/include/openssl/dsa.h +8 -2
  419. data/third_party/boringssl/include/openssl/e_os2.h +18 -0
  420. data/third_party/boringssl/include/openssl/ec.h +25 -21
  421. data/third_party/boringssl/include/openssl/ec_key.h +36 -8
  422. data/third_party/boringssl/include/openssl/ecdh.h +17 -0
  423. data/third_party/boringssl/include/openssl/ecdsa.h +3 -3
  424. data/third_party/boringssl/include/openssl/engine.h +4 -4
  425. data/third_party/boringssl/include/openssl/err.h +3 -0
  426. data/third_party/boringssl/include/openssl/evp.h +199 -42
  427. data/third_party/boringssl/include/openssl/hmac.h +4 -4
  428. data/third_party/boringssl/include/openssl/hrss.h +100 -0
  429. data/third_party/boringssl/include/openssl/lhash.h +131 -23
  430. data/third_party/boringssl/include/openssl/md4.h +6 -4
  431. data/third_party/boringssl/include/openssl/md5.h +6 -4
  432. data/third_party/boringssl/include/openssl/mem.h +6 -2
  433. data/third_party/boringssl/include/openssl/nid.h +3 -0
  434. data/third_party/boringssl/include/openssl/obj.h +3 -0
  435. data/third_party/boringssl/include/openssl/pem.h +102 -64
  436. data/third_party/boringssl/include/openssl/pkcs7.h +136 -3
  437. data/third_party/boringssl/include/openssl/pkcs8.h +42 -3
  438. data/third_party/boringssl/include/openssl/pool.h +13 -2
  439. data/third_party/boringssl/include/openssl/ripemd.h +5 -4
  440. data/third_party/boringssl/include/openssl/rsa.h +46 -15
  441. data/third_party/boringssl/include/openssl/sha.h +40 -28
  442. data/third_party/boringssl/include/openssl/siphash.h +37 -0
  443. data/third_party/boringssl/include/openssl/span.h +17 -9
  444. data/third_party/boringssl/include/openssl/ssl.h +766 -393
  445. data/third_party/boringssl/include/openssl/ssl3.h +4 -3
  446. data/third_party/boringssl/include/openssl/stack.h +134 -77
  447. data/third_party/boringssl/include/openssl/thread.h +1 -1
  448. data/third_party/boringssl/include/openssl/tls1.h +25 -9
  449. data/third_party/boringssl/include/openssl/type_check.h +14 -15
  450. data/third_party/boringssl/include/openssl/x509.h +28 -3
  451. data/third_party/boringssl/include/openssl/x509_vfy.h +98 -32
  452. data/third_party/boringssl/include/openssl/x509v3.h +17 -13
  453. data/third_party/boringssl/ssl/d1_both.cc +9 -18
  454. data/third_party/boringssl/ssl/d1_lib.cc +4 -3
  455. data/third_party/boringssl/ssl/d1_pkt.cc +4 -4
  456. data/third_party/boringssl/ssl/d1_srtp.cc +15 -15
  457. data/third_party/boringssl/ssl/dtls_method.cc +0 -1
  458. data/third_party/boringssl/ssl/dtls_record.cc +28 -28
  459. data/third_party/boringssl/ssl/handoff.cc +295 -91
  460. data/third_party/boringssl/ssl/handshake.cc +133 -72
  461. data/third_party/boringssl/ssl/handshake_client.cc +218 -189
  462. data/third_party/boringssl/ssl/handshake_server.cc +399 -272
  463. data/third_party/boringssl/ssl/internal.h +1413 -928
  464. data/third_party/boringssl/ssl/s3_both.cc +175 -36
  465. data/third_party/boringssl/ssl/s3_lib.cc +9 -13
  466. data/third_party/boringssl/ssl/s3_pkt.cc +63 -29
  467. data/third_party/boringssl/ssl/ssl_aead_ctx.cc +55 -35
  468. data/third_party/boringssl/ssl/ssl_asn1.cc +57 -73
  469. data/third_party/boringssl/ssl/ssl_buffer.cc +13 -12
  470. data/third_party/boringssl/ssl/ssl_cert.cc +313 -210
  471. data/third_party/boringssl/ssl/ssl_cipher.cc +159 -221
  472. data/third_party/boringssl/ssl/ssl_file.cc +2 -0
  473. data/third_party/boringssl/ssl/ssl_key_share.cc +164 -19
  474. data/third_party/boringssl/ssl/ssl_lib.cc +847 -555
  475. data/third_party/boringssl/ssl/ssl_privkey.cc +441 -111
  476. data/third_party/boringssl/ssl/ssl_session.cc +230 -178
  477. data/third_party/boringssl/ssl/ssl_transcript.cc +21 -142
  478. data/third_party/boringssl/ssl/ssl_versions.cc +88 -93
  479. data/third_party/boringssl/ssl/ssl_x509.cc +279 -218
  480. data/third_party/boringssl/ssl/t1_enc.cc +5 -96
  481. data/third_party/boringssl/ssl/t1_lib.cc +931 -678
  482. data/third_party/boringssl/ssl/tls13_both.cc +251 -121
  483. data/third_party/boringssl/ssl/tls13_client.cc +129 -73
  484. data/third_party/boringssl/ssl/tls13_enc.cc +350 -282
  485. data/third_party/boringssl/ssl/tls13_server.cc +259 -192
  486. data/third_party/boringssl/ssl/tls_method.cc +26 -21
  487. data/third_party/boringssl/ssl/tls_record.cc +42 -47
  488. data/third_party/boringssl/third_party/fiat/curve25519.c +261 -1324
  489. data/third_party/boringssl/third_party/fiat/curve25519_32.h +911 -0
  490. data/third_party/boringssl/third_party/fiat/curve25519_64.h +559 -0
  491. data/third_party/boringssl/third_party/fiat/p256.c +238 -999
  492. data/third_party/boringssl/third_party/fiat/p256_32.h +3226 -0
  493. data/third_party/boringssl/third_party/fiat/p256_64.h +1217 -0
  494. data/third_party/upb/upb/port_def.inc +1 -1
  495. data/third_party/upb/upb/table.c +2 -1
  496. metadata +72 -44
  497. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +0 -127
  498. data/src/core/lib/gpr/mpscq.cc +0 -117
  499. data/src/core/lib/gpr/mpscq.h +0 -88
  500. data/src/core/lib/gprpp/abstract.h +0 -47
  501. data/src/core/lib/gprpp/pair.h +0 -38
  502. data/third_party/boringssl/crypto/cipher_extra/e_ssl3.c +0 -460
  503. data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +0 -256
  504. data/third_party/boringssl/include/openssl/lhash_macros.h +0 -174
  505. data/third_party/boringssl/ssl/custom_extensions.cc +0 -265
@@ -0,0 +1,53 @@
1
+ /* Copyright (c) 2018, 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
+ #ifndef OPENSSL_HEADER_SHA_INTERNAL_H
16
+ #define OPENSSL_HEADER_SHA_INTERNAL_H
17
+
18
+ #include <openssl/base.h>
19
+
20
+ #if defined(__cplusplus)
21
+ extern "C" {
22
+ #endif
23
+
24
+
25
+ #if defined(OPENSSL_PPC64LE) || \
26
+ (!defined(OPENSSL_NO_ASM) && \
27
+ (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \
28
+ defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)))
29
+ // POWER has an intrinsics-based implementation of SHA-1 and thus the functions
30
+ // normally defined in assembly are available even with |OPENSSL_NO_ASM| in
31
+ // this case.
32
+ #define SHA1_ASM
33
+ void sha1_block_data_order(uint32_t *state, const uint8_t *in,
34
+ size_t num_blocks);
35
+ #endif
36
+
37
+ #if !defined(OPENSSL_NO_ASM) && \
38
+ (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \
39
+ defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64))
40
+ #define SHA256_ASM
41
+ #define SHA512_ASM
42
+ void sha256_block_data_order(uint32_t *state, const uint8_t *in,
43
+ size_t num_blocks);
44
+ void sha512_block_data_order(uint64_t *state, const uint8_t *in,
45
+ size_t num_blocks);
46
+ #endif
47
+
48
+
49
+ #if defined(__cplusplus)
50
+ } // extern "C"
51
+ #endif
52
+
53
+ #endif // OPENSSL_HEADER_SHA_INTERNAL_H
@@ -60,16 +60,10 @@
60
60
 
61
61
  #include <openssl/mem.h>
62
62
 
63
+ #include "internal.h"
63
64
  #include "../../internal.h"
64
65
 
65
66
 
66
- #if (!defined(OPENSSL_NO_ASM) && \
67
- (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \
68
- defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64))) || \
69
- defined(OPENSSL_PPC64LE)
70
- #define SHA1_ASM
71
- #endif
72
-
73
67
  int SHA1_Init(SHA_CTX *sha) {
74
68
  OPENSSL_memset(sha, 0, sizeof(SHA_CTX));
75
69
  sha->h[0] = 0x67452301UL;
@@ -80,7 +74,7 @@ int SHA1_Init(SHA_CTX *sha) {
80
74
  return 1;
81
75
  }
82
76
 
83
- uint8_t *SHA1(const uint8_t *data, size_t len, uint8_t *out) {
77
+ uint8_t *SHA1(const uint8_t *data, size_t len, uint8_t out[SHA_DIGEST_LENGTH]) {
84
78
  SHA_CTX ctx;
85
79
  SHA1_Init(&ctx);
86
80
  SHA1_Update(&ctx, data, len);
@@ -93,6 +87,7 @@ uint8_t *SHA1(const uint8_t *data, size_t len, uint8_t *out) {
93
87
 
94
88
  #define HASH_CTX SHA_CTX
95
89
  #define HASH_CBLOCK 64
90
+ #define HASH_DIGEST_LENGTH 20
96
91
  #define HASH_MAKE_STRING(c, s) \
97
92
  do { \
98
93
  uint32_t ll; \
@@ -119,10 +114,10 @@ uint8_t *SHA1(const uint8_t *data, size_t len, uint8_t *out) {
119
114
  (ix) = (a) = ROTATE((a), 1); \
120
115
  } while (0)
121
116
 
122
- #ifndef SHA1_ASM
123
- static
117
+ #if !defined(SHA1_ASM)
118
+ static void sha1_block_data_order(uint32_t *state, const uint8_t *data,
119
+ size_t num);
124
120
  #endif
125
- void sha1_block_data_order(uint32_t *state, const uint8_t *data, size_t num);
126
121
 
127
122
  #include "../digest/md32_common.h"
128
123
 
@@ -192,8 +187,8 @@ void sha1_block_data_order(uint32_t *state, const uint8_t *data, size_t num);
192
187
  * "find" this expectation reasonable:-( On order to make such
193
188
  * compilers generate better code I replace X[] with a bunch of
194
189
  * X0, X1, etc. See the function body below...
195
- * <appro@fy.chalmers.se> */
196
- #define X(i) XX##i
190
+ * <appro@fy.chalmers.se> */
191
+ #define X(i) XX##i
197
192
 
198
193
  #if !defined(SHA1_ASM)
199
194
  static void sha1_block_data_order(uint32_t *state, const uint8_t *data,
@@ -349,6 +344,7 @@ static void sha1_block_data_order(uint32_t *state, const uint8_t *data,
349
344
  #undef DATA_ORDER_IS_BIG_ENDIAN
350
345
  #undef HASH_CTX
351
346
  #undef HASH_CBLOCK
347
+ #undef HASH_DIGEST_LENGTH
352
348
  #undef HASH_MAKE_STRING
353
349
  #undef HASH_UPDATE
354
350
  #undef HASH_TRANSFORM
@@ -60,15 +60,10 @@
60
60
 
61
61
  #include <openssl/mem.h>
62
62
 
63
+ #include "internal.h"
63
64
  #include "../../internal.h"
64
65
 
65
66
 
66
- #if !defined(OPENSSL_NO_ASM) && \
67
- (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \
68
- defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64))
69
- #define SHA256_ASM
70
- #endif
71
-
72
67
  int SHA224_Init(SHA256_CTX *sha) {
73
68
  OPENSSL_memset(sha, 0, sizeof(SHA256_CTX));
74
69
  sha->h[0] = 0xc1059ed8UL;
@@ -97,7 +92,8 @@ int SHA256_Init(SHA256_CTX *sha) {
97
92
  return 1;
98
93
  }
99
94
 
100
- uint8_t *SHA224(const uint8_t *data, size_t len, uint8_t *out) {
95
+ uint8_t *SHA224(const uint8_t *data, size_t len,
96
+ uint8_t out[SHA224_DIGEST_LENGTH]) {
101
97
  SHA256_CTX ctx;
102
98
  SHA224_Init(&ctx);
103
99
  SHA224_Update(&ctx, data, len);
@@ -106,7 +102,8 @@ uint8_t *SHA224(const uint8_t *data, size_t len, uint8_t *out) {
106
102
  return out;
107
103
  }
108
104
 
109
- uint8_t *SHA256(const uint8_t *data, size_t len, uint8_t *out) {
105
+ uint8_t *SHA256(const uint8_t *data, size_t len,
106
+ uint8_t out[SHA256_DIGEST_LENGTH]) {
110
107
  SHA256_CTX ctx;
111
108
  SHA256_Init(&ctx);
112
109
  SHA256_Update(&ctx, data, len);
@@ -119,14 +116,17 @@ int SHA224_Update(SHA256_CTX *ctx, const void *data, size_t len) {
119
116
  return SHA256_Update(ctx, data, len);
120
117
  }
121
118
 
122
- int SHA224_Final(uint8_t *md, SHA256_CTX *ctx) {
123
- return SHA256_Final(md, ctx);
119
+ int SHA224_Final(uint8_t out[SHA224_DIGEST_LENGTH], SHA256_CTX *ctx) {
120
+ // SHA224_Init sets |ctx->md_len| to |SHA224_DIGEST_LENGTH|, so this has a
121
+ // smaller output.
122
+ return SHA256_Final(out, ctx);
124
123
  }
125
124
 
126
125
  #define DATA_ORDER_IS_BIG_ENDIAN
127
126
 
128
127
  #define HASH_CTX SHA256_CTX
129
128
  #define HASH_CBLOCK 64
129
+ #define HASH_DIGEST_LENGTH 32
130
130
 
131
131
  // Note that FIPS180-2 discusses "Truncation of the Hash Function Output."
132
132
  // default: case below covers for it. It's not clear however if it's permitted
@@ -172,9 +172,9 @@ int SHA224_Final(uint8_t *md, SHA256_CTX *ctx) {
172
172
  #define HASH_FINAL SHA256_Final
173
173
  #define HASH_BLOCK_DATA_ORDER sha256_block_data_order
174
174
  #ifndef SHA256_ASM
175
- static
175
+ static void sha256_block_data_order(uint32_t *state, const uint8_t *in,
176
+ size_t num);
176
177
  #endif
177
- void sha256_block_data_order(uint32_t *state, const uint8_t *in, size_t num);
178
178
 
179
179
  #include "../digest/md32_common.h"
180
180
 
@@ -316,9 +316,15 @@ static void sha256_block_data_order(uint32_t *state, const uint8_t *data,
316
316
 
317
317
  #endif // !SHA256_ASM
318
318
 
319
+ void SHA256_TransformBlocks(uint32_t state[8], const uint8_t *data,
320
+ size_t num_blocks) {
321
+ sha256_block_data_order(state, data, num_blocks);
322
+ }
323
+
319
324
  #undef DATA_ORDER_IS_BIG_ENDIAN
320
325
  #undef HASH_CTX
321
326
  #undef HASH_CBLOCK
327
+ #undef HASH_DIGEST_LENGTH
322
328
  #undef HASH_MAKE_STRING
323
329
  #undef HASH_UPDATE
324
330
  #undef HASH_TRANSFORM
@@ -60,31 +60,15 @@
60
60
 
61
61
  #include <openssl/mem.h>
62
62
 
63
+ #include "internal.h"
63
64
  #include "../../internal.h"
64
65
 
65
66
 
66
- // IMPLEMENTATION NOTES.
67
- //
68
67
  // The 32-bit hash algorithms share a common byte-order neutral collector and
69
68
  // padding function implementations that operate on unaligned data,
70
- // ../md32_common.h. This SHA-512 implementation does not. Reasons
71
- // [in reverse order] are:
72
- //
73
- // - It's the only 64-bit hash algorithm for the moment of this writing,
74
- // there is no need for common collector/padding implementation [yet];
75
- // - By supporting only a transform function that operates on *aligned* data
76
- // the collector/padding function is simpler and easier to optimize.
77
-
78
- #if !defined(OPENSSL_NO_ASM) && \
79
- (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \
80
- defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64))
81
- #define SHA512_ASM
82
- #endif
83
-
84
- #if defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \
85
- defined(__ARM_FEATURE_UNALIGNED)
86
- #define SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA
87
- #endif
69
+ // ../digest/md32_common.h. SHA-512 is the only 64-bit hash algorithm, as of
70
+ // this writing, so there is no need for a common collector/padding
71
+ // implementation yet.
88
72
 
89
73
  int SHA384_Init(SHA512_CTX *sha) {
90
74
  sha->h[0] = UINT64_C(0xcbbb9d5dc1059ed8);
@@ -121,7 +105,8 @@ int SHA512_Init(SHA512_CTX *sha) {
121
105
  return 1;
122
106
  }
123
107
 
124
- uint8_t *SHA384(const uint8_t *data, size_t len, uint8_t *out) {
108
+ uint8_t *SHA384(const uint8_t *data, size_t len,
109
+ uint8_t out[SHA384_DIGEST_LENGTH]) {
125
110
  SHA512_CTX ctx;
126
111
  SHA384_Init(&ctx);
127
112
  SHA384_Update(&ctx, data, len);
@@ -130,7 +115,8 @@ uint8_t *SHA384(const uint8_t *data, size_t len, uint8_t *out) {
130
115
  return out;
131
116
  }
132
117
 
133
- uint8_t *SHA512(const uint8_t *data, size_t len, uint8_t *out) {
118
+ uint8_t *SHA512(const uint8_t *data, size_t len,
119
+ uint8_t out[SHA512_DIGEST_LENGTH]) {
134
120
  SHA512_CTX ctx;
135
121
  SHA512_Init(&ctx);
136
122
  SHA512_Update(&ctx, data, len);
@@ -140,33 +126,29 @@ uint8_t *SHA512(const uint8_t *data, size_t len, uint8_t *out) {
140
126
  }
141
127
 
142
128
  #if !defined(SHA512_ASM)
143
- static
129
+ static void sha512_block_data_order(uint64_t *state, const uint8_t *in,
130
+ size_t num_blocks);
144
131
  #endif
145
- void sha512_block_data_order(uint64_t *state, const uint64_t *W, size_t num);
146
132
 
147
133
 
148
- int SHA384_Final(uint8_t *md, SHA512_CTX *sha) {
149
- return SHA512_Final(md, sha);
134
+ int SHA384_Final(uint8_t out[SHA384_DIGEST_LENGTH], SHA512_CTX *sha) {
135
+ // |SHA384_Init| sets |sha->md_len| to |SHA384_DIGEST_LENGTH|, so this has a
136
+ // |smaller output.
137
+ return SHA512_Final(out, sha);
150
138
  }
151
139
 
152
140
  int SHA384_Update(SHA512_CTX *sha, const void *data, size_t len) {
153
141
  return SHA512_Update(sha, data, len);
154
142
  }
155
143
 
156
- void SHA512_Transform(SHA512_CTX *c, const uint8_t *block) {
157
- #ifndef SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA
158
- if ((size_t)block % sizeof(c->u.d[0]) != 0) {
159
- OPENSSL_memcpy(c->u.p, block, sizeof(c->u.p));
160
- block = c->u.p;
161
- }
162
- #endif
163
- sha512_block_data_order(c->h, (uint64_t *)block, 1);
144
+ void SHA512_Transform(SHA512_CTX *c, const uint8_t block[SHA512_CBLOCK]) {
145
+ sha512_block_data_order(c->h, block, 1);
164
146
  }
165
147
 
166
148
  int SHA512_Update(SHA512_CTX *c, const void *in_data, size_t len) {
167
149
  uint64_t l;
168
- uint8_t *p = c->u.p;
169
- const uint8_t *data = (const uint8_t *)in_data;
150
+ uint8_t *p = c->p;
151
+ const uint8_t *data = in_data;
170
152
 
171
153
  if (len == 0) {
172
154
  return 1;
@@ -182,7 +164,7 @@ int SHA512_Update(SHA512_CTX *c, const void *in_data, size_t len) {
182
164
  c->Nl = l;
183
165
 
184
166
  if (c->num != 0) {
185
- size_t n = sizeof(c->u) - c->num;
167
+ size_t n = sizeof(c->p) - c->num;
186
168
 
187
169
  if (len < n) {
188
170
  OPENSSL_memcpy(p + c->num, data, len);
@@ -192,27 +174,15 @@ int SHA512_Update(SHA512_CTX *c, const void *in_data, size_t len) {
192
174
  OPENSSL_memcpy(p + c->num, data, n), c->num = 0;
193
175
  len -= n;
194
176
  data += n;
195
- sha512_block_data_order(c->h, (uint64_t *)p, 1);
177
+ sha512_block_data_order(c->h, p, 1);
196
178
  }
197
179
  }
198
180
 
199
- if (len >= sizeof(c->u)) {
200
- #ifndef SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA
201
- if ((size_t)data % sizeof(c->u.d[0]) != 0) {
202
- while (len >= sizeof(c->u)) {
203
- OPENSSL_memcpy(p, data, sizeof(c->u));
204
- sha512_block_data_order(c->h, (uint64_t *)p, 1);
205
- len -= sizeof(c->u);
206
- data += sizeof(c->u);
207
- }
208
- } else
209
- #endif
210
- {
211
- sha512_block_data_order(c->h, (uint64_t *)data, len / sizeof(c->u));
212
- data += len;
213
- len %= sizeof(c->u);
214
- data -= len;
215
- }
181
+ if (len >= sizeof(c->p)) {
182
+ sha512_block_data_order(c->h, data, len / sizeof(c->p));
183
+ data += len;
184
+ len %= sizeof(c->p);
185
+ data -= len;
216
186
  }
217
187
 
218
188
  if (len != 0) {
@@ -223,39 +193,39 @@ int SHA512_Update(SHA512_CTX *c, const void *in_data, size_t len) {
223
193
  return 1;
224
194
  }
225
195
 
226
- int SHA512_Final(uint8_t *md, SHA512_CTX *sha) {
227
- uint8_t *p = (uint8_t *)sha->u.p;
196
+ int SHA512_Final(uint8_t out[SHA512_DIGEST_LENGTH], SHA512_CTX *sha) {
197
+ uint8_t *p = sha->p;
228
198
  size_t n = sha->num;
229
199
 
230
200
  p[n] = 0x80; // There always is a room for one
231
201
  n++;
232
- if (n > (sizeof(sha->u) - 16)) {
233
- OPENSSL_memset(p + n, 0, sizeof(sha->u) - n);
202
+ if (n > (sizeof(sha->p) - 16)) {
203
+ OPENSSL_memset(p + n, 0, sizeof(sha->p) - n);
234
204
  n = 0;
235
- sha512_block_data_order(sha->h, (uint64_t *)p, 1);
205
+ sha512_block_data_order(sha->h, p, 1);
236
206
  }
237
207
 
238
- OPENSSL_memset(p + n, 0, sizeof(sha->u) - 16 - n);
239
- p[sizeof(sha->u) - 1] = (uint8_t)(sha->Nl);
240
- p[sizeof(sha->u) - 2] = (uint8_t)(sha->Nl >> 8);
241
- p[sizeof(sha->u) - 3] = (uint8_t)(sha->Nl >> 16);
242
- p[sizeof(sha->u) - 4] = (uint8_t)(sha->Nl >> 24);
243
- p[sizeof(sha->u) - 5] = (uint8_t)(sha->Nl >> 32);
244
- p[sizeof(sha->u) - 6] = (uint8_t)(sha->Nl >> 40);
245
- p[sizeof(sha->u) - 7] = (uint8_t)(sha->Nl >> 48);
246
- p[sizeof(sha->u) - 8] = (uint8_t)(sha->Nl >> 56);
247
- p[sizeof(sha->u) - 9] = (uint8_t)(sha->Nh);
248
- p[sizeof(sha->u) - 10] = (uint8_t)(sha->Nh >> 8);
249
- p[sizeof(sha->u) - 11] = (uint8_t)(sha->Nh >> 16);
250
- p[sizeof(sha->u) - 12] = (uint8_t)(sha->Nh >> 24);
251
- p[sizeof(sha->u) - 13] = (uint8_t)(sha->Nh >> 32);
252
- p[sizeof(sha->u) - 14] = (uint8_t)(sha->Nh >> 40);
253
- p[sizeof(sha->u) - 15] = (uint8_t)(sha->Nh >> 48);
254
- p[sizeof(sha->u) - 16] = (uint8_t)(sha->Nh >> 56);
255
-
256
- sha512_block_data_order(sha->h, (uint64_t *)p, 1);
257
-
258
- if (md == NULL) {
208
+ OPENSSL_memset(p + n, 0, sizeof(sha->p) - 16 - n);
209
+ p[sizeof(sha->p) - 1] = (uint8_t)(sha->Nl);
210
+ p[sizeof(sha->p) - 2] = (uint8_t)(sha->Nl >> 8);
211
+ p[sizeof(sha->p) - 3] = (uint8_t)(sha->Nl >> 16);
212
+ p[sizeof(sha->p) - 4] = (uint8_t)(sha->Nl >> 24);
213
+ p[sizeof(sha->p) - 5] = (uint8_t)(sha->Nl >> 32);
214
+ p[sizeof(sha->p) - 6] = (uint8_t)(sha->Nl >> 40);
215
+ p[sizeof(sha->p) - 7] = (uint8_t)(sha->Nl >> 48);
216
+ p[sizeof(sha->p) - 8] = (uint8_t)(sha->Nl >> 56);
217
+ p[sizeof(sha->p) - 9] = (uint8_t)(sha->Nh);
218
+ p[sizeof(sha->p) - 10] = (uint8_t)(sha->Nh >> 8);
219
+ p[sizeof(sha->p) - 11] = (uint8_t)(sha->Nh >> 16);
220
+ p[sizeof(sha->p) - 12] = (uint8_t)(sha->Nh >> 24);
221
+ p[sizeof(sha->p) - 13] = (uint8_t)(sha->Nh >> 32);
222
+ p[sizeof(sha->p) - 14] = (uint8_t)(sha->Nh >> 40);
223
+ p[sizeof(sha->p) - 15] = (uint8_t)(sha->Nh >> 48);
224
+ p[sizeof(sha->p) - 16] = (uint8_t)(sha->Nh >> 56);
225
+
226
+ sha512_block_data_order(sha->h, p, 1);
227
+
228
+ if (out == NULL) {
259
229
  // TODO(davidben): This NULL check is absent in other low-level hash 'final'
260
230
  // functions and is one of the few places one can fail.
261
231
  return 0;
@@ -267,28 +237,28 @@ int SHA512_Final(uint8_t *md, SHA512_CTX *sha) {
267
237
  for (n = 0; n < SHA384_DIGEST_LENGTH / 8; n++) {
268
238
  uint64_t t = sha->h[n];
269
239
 
270
- *(md++) = (uint8_t)(t >> 56);
271
- *(md++) = (uint8_t)(t >> 48);
272
- *(md++) = (uint8_t)(t >> 40);
273
- *(md++) = (uint8_t)(t >> 32);
274
- *(md++) = (uint8_t)(t >> 24);
275
- *(md++) = (uint8_t)(t >> 16);
276
- *(md++) = (uint8_t)(t >> 8);
277
- *(md++) = (uint8_t)(t);
240
+ *(out++) = (uint8_t)(t >> 56);
241
+ *(out++) = (uint8_t)(t >> 48);
242
+ *(out++) = (uint8_t)(t >> 40);
243
+ *(out++) = (uint8_t)(t >> 32);
244
+ *(out++) = (uint8_t)(t >> 24);
245
+ *(out++) = (uint8_t)(t >> 16);
246
+ *(out++) = (uint8_t)(t >> 8);
247
+ *(out++) = (uint8_t)(t);
278
248
  }
279
249
  break;
280
250
  case SHA512_DIGEST_LENGTH:
281
251
  for (n = 0; n < SHA512_DIGEST_LENGTH / 8; n++) {
282
252
  uint64_t t = sha->h[n];
283
253
 
284
- *(md++) = (uint8_t)(t >> 56);
285
- *(md++) = (uint8_t)(t >> 48);
286
- *(md++) = (uint8_t)(t >> 40);
287
- *(md++) = (uint8_t)(t >> 32);
288
- *(md++) = (uint8_t)(t >> 24);
289
- *(md++) = (uint8_t)(t >> 16);
290
- *(md++) = (uint8_t)(t >> 8);
291
- *(md++) = (uint8_t)(t);
254
+ *(out++) = (uint8_t)(t >> 56);
255
+ *(out++) = (uint8_t)(t >> 48);
256
+ *(out++) = (uint8_t)(t >> 40);
257
+ *(out++) = (uint8_t)(t >> 32);
258
+ *(out++) = (uint8_t)(t >> 24);
259
+ *(out++) = (uint8_t)(t >> 16);
260
+ *(out++) = (uint8_t)(t >> 8);
261
+ *(out++) = (uint8_t)(t);
292
262
  }
293
263
  break;
294
264
  // ... as well as make sure md_len is not abused.
@@ -353,20 +323,6 @@ static const uint64_t K512[80] = {
353
323
  __asm__("rorq %1, %0" : "=r"(ret) : "J"(n), "0"(a) : "cc"); \
354
324
  ret; \
355
325
  })
356
- #define PULL64(x) \
357
- ({ \
358
- uint64_t ret = *((const uint64_t *)(&(x))); \
359
- __asm__("bswapq %0" : "=r"(ret) : "0"(ret)); \
360
- ret; \
361
- })
362
- #elif(defined(__i386) || defined(__i386__))
363
- #define PULL64(x) \
364
- ({ \
365
- const unsigned int *p = (const unsigned int *)(&(x)); \
366
- unsigned int hi = p[0], lo = p[1]; \
367
- __asm__("bswapl %0; bswapl %1;" : "=r"(lo), "=r"(hi) : "0"(lo), "1"(hi)); \
368
- ((uint64_t)hi) << 32 | lo; \
369
- })
370
326
  #elif(defined(_ARCH_PPC) && defined(__64BIT__)) || defined(_ARCH_PPC64)
371
327
  #define ROTR(a, n) \
372
328
  ({ \
@@ -381,47 +337,22 @@ static const uint64_t K512[80] = {
381
337
  __asm__("ror %0, %1, %2" : "=r"(ret) : "r"(a), "I"(n)); \
382
338
  ret; \
383
339
  })
384
- #if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && \
385
- __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
386
- #define PULL64(x) \
387
- ({ \
388
- uint64_t ret; \
389
- __asm__("rev %0, %1" : "=r"(ret) : "r"(*((const uint64_t *)(&(x))))); \
390
- ret; \
391
- })
392
- #endif
393
340
  #endif
394
- #elif defined(_MSC_VER)
395
- #if defined(_WIN64) // applies to both IA-64 and AMD64
341
+ #elif defined(_MSC_VER) && defined(_WIN64)
396
342
  #pragma intrinsic(_rotr64)
397
343
  #define ROTR(a, n) _rotr64((a), n)
398
344
  #endif
399
- #if defined(_M_IX86) && !defined(OPENSSL_NO_ASM)
400
- static uint64_t __fastcall __pull64be(const void *x) {
401
- _asm mov edx, [ecx + 0]
402
- _asm mov eax, [ecx + 4]
403
- _asm bswap edx
404
- _asm bswap eax
405
- }
406
- #define PULL64(x) __pull64be(&(x))
407
- #if _MSC_VER <= 1200
408
- #pragma inline_depth(0)
409
- #endif
410
- #endif
411
- #endif
412
-
413
- #ifndef PULL64
414
- #define B(x, j) \
415
- (((uint64_t)(*(((const uint8_t *)(&x)) + j))) << ((7 - j) * 8))
416
- #define PULL64(x) \
417
- (B(x, 0) | B(x, 1) | B(x, 2) | B(x, 3) | B(x, 4) | B(x, 5) | B(x, 6) | \
418
- B(x, 7))
419
- #endif
420
345
 
421
346
  #ifndef ROTR
422
347
  #define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
423
348
  #endif
424
349
 
350
+ static inline uint64_t load_u64_be(const void *ptr) {
351
+ uint64_t ret;
352
+ OPENSSL_memcpy(&ret, ptr, sizeof(ret));
353
+ return CRYPTO_bswap8(ret);
354
+ }
355
+
425
356
  #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
426
357
  #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
427
358
  #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
@@ -434,7 +365,7 @@ static uint64_t __fastcall __pull64be(const void *x) {
434
365
  #if defined(__i386) || defined(__i386__) || defined(_M_IX86)
435
366
  // This code should give better results on 32-bit CPU with less than
436
367
  // ~24 registers, both size and performance wise...
437
- static void sha512_block_data_order(uint64_t *state, const uint64_t *W,
368
+ static void sha512_block_data_order(uint64_t *state, const uint8_t *in,
438
369
  size_t num) {
439
370
  uint64_t A, E, T;
440
371
  uint64_t X[9 + 80], *F;
@@ -452,7 +383,7 @@ static void sha512_block_data_order(uint64_t *state, const uint64_t *W,
452
383
  F[7] = state[7];
453
384
 
454
385
  for (i = 0; i < 16; i++, F--) {
455
- T = PULL64(W[i]);
386
+ T = load_u64_be(in + i * 8);
456
387
  F[0] = A;
457
388
  F[4] = E;
458
389
  F[8] = T;
@@ -483,7 +414,7 @@ static void sha512_block_data_order(uint64_t *state, const uint64_t *W,
483
414
  state[6] += F[6];
484
415
  state[7] += F[7];
485
416
 
486
- W += 16;
417
+ in += 16 * 8;
487
418
  }
488
419
  }
489
420
 
@@ -507,7 +438,7 @@ static void sha512_block_data_order(uint64_t *state, const uint64_t *W,
507
438
  ROUND_00_15(i + j, a, b, c, d, e, f, g, h); \
508
439
  } while (0)
509
440
 
510
- static void sha512_block_data_order(uint64_t *state, const uint64_t *W,
441
+ static void sha512_block_data_order(uint64_t *state, const uint8_t *in,
511
442
  size_t num) {
512
443
  uint64_t a, b, c, d, e, f, g, h, s0, s1, T1;
513
444
  uint64_t X[16];
@@ -524,37 +455,37 @@ static void sha512_block_data_order(uint64_t *state, const uint64_t *W,
524
455
  g = state[6];
525
456
  h = state[7];
526
457
 
527
- T1 = X[0] = PULL64(W[0]);
458
+ T1 = X[0] = load_u64_be(in);
528
459
  ROUND_00_15(0, a, b, c, d, e, f, g, h);
529
- T1 = X[1] = PULL64(W[1]);
460
+ T1 = X[1] = load_u64_be(in + 8);
530
461
  ROUND_00_15(1, h, a, b, c, d, e, f, g);
531
- T1 = X[2] = PULL64(W[2]);
462
+ T1 = X[2] = load_u64_be(in + 2 * 8);
532
463
  ROUND_00_15(2, g, h, a, b, c, d, e, f);
533
- T1 = X[3] = PULL64(W[3]);
464
+ T1 = X[3] = load_u64_be(in + 3 * 8);
534
465
  ROUND_00_15(3, f, g, h, a, b, c, d, e);
535
- T1 = X[4] = PULL64(W[4]);
466
+ T1 = X[4] = load_u64_be(in + 4 * 8);
536
467
  ROUND_00_15(4, e, f, g, h, a, b, c, d);
537
- T1 = X[5] = PULL64(W[5]);
468
+ T1 = X[5] = load_u64_be(in + 5 * 8);
538
469
  ROUND_00_15(5, d, e, f, g, h, a, b, c);
539
- T1 = X[6] = PULL64(W[6]);
470
+ T1 = X[6] = load_u64_be(in + 6 * 8);
540
471
  ROUND_00_15(6, c, d, e, f, g, h, a, b);
541
- T1 = X[7] = PULL64(W[7]);
472
+ T1 = X[7] = load_u64_be(in + 7 * 8);
542
473
  ROUND_00_15(7, b, c, d, e, f, g, h, a);
543
- T1 = X[8] = PULL64(W[8]);
474
+ T1 = X[8] = load_u64_be(in + 8 * 8);
544
475
  ROUND_00_15(8, a, b, c, d, e, f, g, h);
545
- T1 = X[9] = PULL64(W[9]);
476
+ T1 = X[9] = load_u64_be(in + 9 * 8);
546
477
  ROUND_00_15(9, h, a, b, c, d, e, f, g);
547
- T1 = X[10] = PULL64(W[10]);
478
+ T1 = X[10] = load_u64_be(in + 10 * 8);
548
479
  ROUND_00_15(10, g, h, a, b, c, d, e, f);
549
- T1 = X[11] = PULL64(W[11]);
480
+ T1 = X[11] = load_u64_be(in + 11 * 8);
550
481
  ROUND_00_15(11, f, g, h, a, b, c, d, e);
551
- T1 = X[12] = PULL64(W[12]);
482
+ T1 = X[12] = load_u64_be(in + 12 * 8);
552
483
  ROUND_00_15(12, e, f, g, h, a, b, c, d);
553
- T1 = X[13] = PULL64(W[13]);
484
+ T1 = X[13] = load_u64_be(in + 13 * 8);
554
485
  ROUND_00_15(13, d, e, f, g, h, a, b, c);
555
- T1 = X[14] = PULL64(W[14]);
486
+ T1 = X[14] = load_u64_be(in + 14 * 8);
556
487
  ROUND_00_15(14, c, d, e, f, g, h, a, b);
557
- T1 = X[15] = PULL64(W[15]);
488
+ T1 = X[15] = load_u64_be(in + 15 * 8);
558
489
  ROUND_00_15(15, b, c, d, e, f, g, h, a);
559
490
 
560
491
  for (i = 16; i < 80; i += 16) {
@@ -585,7 +516,7 @@ static void sha512_block_data_order(uint64_t *state, const uint64_t *W,
585
516
  state[6] += g;
586
517
  state[7] += h;
587
518
 
588
- W += 16;
519
+ in += 16 * 8;
589
520
  }
590
521
  }
591
522
 
@@ -594,8 +525,6 @@ static void sha512_block_data_order(uint64_t *state, const uint64_t *W,
594
525
  #endif // !SHA512_ASM
595
526
 
596
527
  #undef ROTR
597
- #undef PULL64
598
- #undef B
599
528
  #undef Sigma0
600
529
  #undef Sigma1
601
530
  #undef sigma0
@@ -604,5 +533,3 @@ static void sha512_block_data_order(uint64_t *state, const uint64_t *W,
604
533
  #undef Maj
605
534
  #undef ROUND_00_15
606
535
  #undef ROUND_16_80
607
- #undef HOST_c2l
608
- #undef HOST_l2c