grpc 1.41.1 → 1.42.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 (416) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +55 -43
  3. data/include/grpc/event_engine/event_engine.h +82 -42
  4. data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
  5. data/include/grpc/event_engine/memory_allocator.h +210 -0
  6. data/include/grpc/grpc.h +4 -0
  7. data/include/grpc/grpc_security.h +18 -0
  8. data/include/grpc/grpc_security_constants.h +1 -0
  9. data/include/grpc/impl/codegen/port_platform.h +7 -0
  10. data/src/core/ext/filters/client_channel/backend_metric.cc +18 -19
  11. data/src/core/ext/filters/client_channel/backup_poller.cc +2 -1
  12. data/src/core/ext/filters/client_channel/channel_connectivity.cc +71 -89
  13. data/src/core/ext/filters/client_channel/client_channel.cc +187 -252
  14. data/src/core/ext/filters/client_channel/client_channel.h +74 -27
  15. data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -1
  16. data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
  17. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -14
  18. data/src/core/ext/filters/client_channel/config_selector.cc +1 -1
  19. data/src/core/ext/filters/client_channel/config_selector.h +4 -5
  20. data/src/core/ext/filters/client_channel/connector.h +18 -18
  21. data/src/core/ext/filters/client_channel/dynamic_filters.cc +1 -1
  22. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -1
  23. data/src/core/ext/filters/client_channel/health/health_check_client.cc +12 -11
  24. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
  25. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +4 -0
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -15
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +166 -82
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -4
  31. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -7
  32. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -10
  33. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
  34. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
  35. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -1
  36. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +7 -1
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +6 -2
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -0
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -1
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +7 -16
  42. data/src/core/ext/filters/client_channel/lb_policy.h +11 -1
  43. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
  44. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +11 -5
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -3
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +12 -39
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +21 -1
  49. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
  50. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +3 -1
  51. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +77 -68
  52. data/src/core/ext/filters/client_channel/resolver.h +1 -1
  53. data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
  54. data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -8
  55. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
  56. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +1 -1
  57. data/src/core/ext/filters/client_channel/retry_filter.cc +48 -86
  58. data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
  59. data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -48
  60. data/src/core/ext/filters/client_channel/server_address.h +1 -1
  61. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
  62. data/src/core/ext/filters/client_channel/subchannel.cc +85 -143
  63. data/src/core/ext/filters/client_channel/subchannel.h +29 -49
  64. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
  65. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
  66. data/src/core/ext/filters/client_idle/client_idle_filter.cc +27 -210
  67. data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
  68. data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
  69. data/src/core/ext/filters/deadline/deadline_filter.cc +23 -26
  70. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -19
  71. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -1
  72. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  73. data/src/core/ext/filters/http/client/http_client_filter.cc +41 -44
  74. data/src/core/ext/filters/http/client_authority_filter.cc +14 -15
  75. data/src/core/ext/filters/http/http_filters_plugin.cc +53 -71
  76. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +17 -12
  77. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +1 -1
  78. data/src/core/ext/filters/http/server/http_server_filter.cc +72 -69
  79. data/src/core/ext/filters/max_age/max_age_filter.cc +24 -26
  80. data/src/core/ext/filters/message_size/message_size_filter.cc +19 -16
  81. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  82. data/src/core/ext/{filters/client_channel → service_config}/service_config.cc +2 -2
  83. data/src/core/ext/{filters/client_channel → service_config}/service_config.h +4 -4
  84. data/src/core/ext/service_config/service_config_call_data.h +72 -0
  85. data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +3 -3
  86. data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +8 -6
  87. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -5
  88. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +19 -24
  89. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +27 -50
  90. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +14 -16
  91. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +59 -58
  92. data/src/core/ext/transport/chttp2/transport/flow_control.cc +19 -16
  93. data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -4
  94. data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
  95. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
  96. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -1
  97. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
  98. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
  99. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +1 -1
  100. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +41 -1
  101. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -4
  102. data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +1 -1
  103. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +136 -98
  104. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +27 -8
  105. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -25
  106. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +37 -30
  107. data/src/core/ext/transport/chttp2/transport/internal.h +4 -3
  108. data/src/core/ext/transport/chttp2/transport/parsing.cc +30 -173
  109. data/src/core/ext/transport/chttp2/transport/popularity_count.h +1 -1
  110. data/src/core/ext/transport/chttp2/transport/writing.cc +29 -22
  111. data/src/core/ext/transport/inproc/inproc_transport.cc +105 -109
  112. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +68 -34
  113. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +139 -1
  114. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +16 -4
  115. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +53 -4
  116. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +3 -2
  117. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +15 -0
  118. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +13 -8
  119. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +23 -0
  120. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +0 -1
  121. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +14 -11
  122. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +17 -0
  123. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -12
  124. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +49 -19
  125. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
  126. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
  127. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +0 -2
  128. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
  129. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
  130. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
  131. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +1 -1
  132. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
  133. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
  134. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
  135. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
  136. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
  137. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
  138. data/src/core/ext/upb-generated/{udpa/type/v1 → xds/type/v3}/typed_struct.upb.c +7 -7
  139. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
  140. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +310 -286
  141. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
  142. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +101 -88
  143. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +5 -0
  144. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +59 -56
  145. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +59 -46
  146. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +78 -82
  147. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +323 -316
  148. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +5 -4
  149. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +19 -23
  150. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -3
  151. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +5 -3
  152. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +5 -4
  153. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
  154. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
  155. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +13 -12
  156. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +25 -24
  157. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +16 -15
  158. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +17 -16
  159. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +33 -32
  160. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +19 -18
  161. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
  162. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
  163. data/src/core/ext/xds/xds_api.cc +325 -362
  164. data/src/core/ext/xds/xds_api.h +134 -82
  165. data/src/core/ext/xds/xds_bootstrap.h +10 -0
  166. data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
  167. data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
  168. data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
  169. data/src/core/ext/xds/xds_client.cc +527 -314
  170. data/src/core/ext/xds/xds_client.h +42 -37
  171. data/src/core/ext/xds/xds_client_stats.h +1 -1
  172. data/src/core/ext/xds/xds_server_config_fetcher.cc +5 -7
  173. data/src/core/lib/address_utils/parse_address.cc +2 -0
  174. data/src/core/lib/avl/avl.cc +5 -5
  175. data/src/core/lib/backoff/backoff.cc +1 -1
  176. data/src/core/lib/channel/channel_args.cc +24 -6
  177. data/src/core/lib/channel/channel_args.h +9 -0
  178. data/src/core/lib/channel/channel_stack_builder.cc +3 -3
  179. data/src/core/lib/channel/channel_trace.cc +1 -1
  180. data/src/core/lib/channel/channel_trace.h +1 -1
  181. data/src/core/lib/channel/channelz.cc +3 -3
  182. data/src/core/lib/channel/channelz.h +2 -2
  183. data/src/core/lib/channel/channelz_registry.cc +1 -1
  184. data/src/core/lib/channel/channelz_registry.h +1 -1
  185. data/src/core/lib/channel/connected_channel.cc +1 -3
  186. data/src/core/lib/channel/connected_channel.h +1 -2
  187. data/src/core/lib/compression/compression.cc +2 -2
  188. data/src/core/lib/compression/compression_args.cc +6 -4
  189. data/src/core/lib/compression/compression_internal.cc +2 -2
  190. data/src/core/lib/compression/compression_internal.h +1 -1
  191. data/src/core/lib/config/core_configuration.cc +44 -2
  192. data/src/core/lib/config/core_configuration.h +39 -1
  193. data/src/core/lib/debug/stats.cc +1 -1
  194. data/src/core/lib/debug/stats_data.cc +13 -13
  195. data/src/core/lib/gpr/atm.cc +1 -1
  196. data/src/core/lib/gpr/cpu_posix.cc +1 -1
  197. data/src/core/lib/gpr/string.cc +2 -2
  198. data/src/core/lib/gpr/tls.h +1 -1
  199. data/src/core/lib/gpr/useful.h +79 -32
  200. data/src/core/lib/gprpp/arena.h +10 -0
  201. data/src/core/lib/gprpp/bitset.h +38 -16
  202. data/src/core/lib/gprpp/chunked_vector.h +211 -0
  203. data/src/core/lib/gprpp/construct_destruct.h +1 -1
  204. data/src/core/lib/gprpp/match.h +1 -1
  205. data/src/core/lib/gprpp/memory.h +6 -0
  206. data/src/core/lib/gprpp/overload.h +1 -1
  207. data/src/core/lib/gprpp/status_helper.cc +23 -3
  208. data/src/core/lib/gprpp/status_helper.h +12 -1
  209. data/src/core/lib/gprpp/table.h +411 -0
  210. data/src/core/lib/http/httpcli.cc +200 -182
  211. data/src/core/lib/http/parser.cc +2 -2
  212. data/src/core/lib/iomgr/call_combiner.cc +28 -10
  213. data/src/core/lib/iomgr/combiner.cc +6 -21
  214. data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -6
  215. data/src/core/lib/iomgr/error.cc +113 -52
  216. data/src/core/lib/iomgr/error.h +50 -9
  217. data/src/core/lib/iomgr/error_cfstream.cc +5 -0
  218. data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -2
  219. data/src/core/lib/iomgr/ev_epollex_linux.cc +7 -7
  220. data/src/core/lib/iomgr/ev_poll_posix.cc +29 -20
  221. data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
  222. data/src/core/lib/iomgr/event_engine/closure.h +10 -1
  223. data/src/core/lib/iomgr/event_engine/endpoint.cc +3 -3
  224. data/src/core/lib/iomgr/event_engine/iomgr.cc +1 -1
  225. data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
  226. data/src/core/lib/iomgr/event_engine/resolver.cc +10 -7
  227. data/src/core/lib/iomgr/event_engine/tcp.cc +9 -8
  228. data/src/core/lib/iomgr/event_engine/timer.cc +7 -2
  229. data/src/core/lib/iomgr/exec_ctx.cc +1 -9
  230. data/src/core/lib/iomgr/executor/mpmcqueue.cc +5 -7
  231. data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -8
  232. data/src/core/lib/iomgr/executor.cc +6 -20
  233. data/src/core/lib/iomgr/iomgr.cc +3 -1
  234. data/src/core/lib/iomgr/iomgr_internal.cc +4 -9
  235. data/src/core/lib/iomgr/iomgr_internal.h +3 -2
  236. data/src/core/lib/iomgr/load_file.cc +2 -2
  237. data/src/core/lib/iomgr/lockfree_event.cc +18 -0
  238. data/src/core/lib/iomgr/pollset_custom.cc +1 -1
  239. data/src/core/lib/iomgr/pollset_custom.h +1 -1
  240. data/src/core/lib/iomgr/resolve_address_posix.cc +5 -7
  241. data/src/core/lib/iomgr/resource_quota.cc +13 -11
  242. data/src/core/lib/iomgr/socket_factory_posix.cc +2 -2
  243. data/src/core/lib/iomgr/socket_mutator.cc +2 -2
  244. data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -2
  245. data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -3
  246. data/src/core/lib/iomgr/tcp_client_custom.cc +1 -1
  247. data/src/core/lib/iomgr/tcp_client_posix.cc +9 -18
  248. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
  249. data/src/core/lib/iomgr/tcp_posix.cc +4 -5
  250. data/src/core/lib/iomgr/tcp_server_custom.cc +2 -1
  251. data/src/core/lib/iomgr/tcp_server_posix.cc +3 -4
  252. data/src/core/lib/iomgr/tcp_server_windows.cc +4 -5
  253. data/src/core/lib/iomgr/tcp_windows.cc +2 -2
  254. data/src/core/lib/iomgr/timer_generic.cc +13 -13
  255. data/src/core/lib/iomgr/timer_heap.cc +1 -1
  256. data/src/core/lib/json/json_util.cc +68 -0
  257. data/src/core/lib/json/json_util.h +57 -99
  258. data/src/core/lib/json/json_writer.cc +0 -3
  259. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  260. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
  261. data/src/core/lib/security/authorization/evaluate_args.cc +14 -12
  262. data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +13 -1
  263. data/src/core/lib/security/context/security_context.cc +4 -2
  264. data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
  265. data/src/core/lib/security/credentials/credentials.cc +4 -2
  266. data/src/core/lib/security/credentials/credentials.h +6 -1
  267. data/src/core/lib/security/credentials/external/external_account_credentials.cc +47 -11
  268. data/src/core/lib/security/credentials/external/external_account_credentials.h +1 -0
  269. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -1
  270. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -9
  271. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -2
  272. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
  273. data/src/core/lib/security/security_connector/security_connector.cc +9 -4
  274. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  275. data/src/core/lib/security/security_connector/ssl_utils.cc +1 -1
  276. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -0
  277. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -2
  278. data/src/core/lib/security/transport/client_auth_filter.cc +5 -5
  279. data/src/core/lib/security/transport/security_handshaker.cc +73 -43
  280. data/src/core/lib/security/transport/server_auth_filter.cc +3 -5
  281. data/src/core/lib/security/transport/tsi_error.cc +3 -5
  282. data/src/core/lib/slice/slice.cc +0 -16
  283. data/src/core/lib/slice/slice_api.cc +39 -0
  284. data/src/core/lib/slice/slice_buffer.cc +5 -5
  285. data/src/core/lib/slice/slice_intern.cc +8 -13
  286. data/src/core/lib/slice/slice_internal.h +1 -244
  287. data/src/core/lib/slice/slice_refcount.cc +17 -0
  288. data/src/core/lib/slice/slice_refcount.h +121 -0
  289. data/src/core/lib/slice/slice_refcount_base.h +173 -0
  290. data/src/core/lib/slice/slice_split.cc +100 -0
  291. data/src/core/lib/slice/slice_split.h +40 -0
  292. data/src/core/lib/slice/slice_string_helpers.cc +0 -83
  293. data/src/core/lib/slice/slice_string_helpers.h +0 -11
  294. data/src/core/lib/slice/static_slice.cc +529 -0
  295. data/src/core/lib/slice/static_slice.h +331 -0
  296. data/src/core/lib/surface/builtins.cc +49 -0
  297. data/src/core/{ext/filters/workarounds/workaround_cronet_compression_filter.h → lib/surface/builtins.h} +8 -9
  298. data/src/core/lib/surface/call.cc +103 -120
  299. data/src/core/lib/surface/call.h +0 -6
  300. data/src/core/lib/surface/channel.cc +19 -32
  301. data/src/core/lib/surface/channel.h +0 -9
  302. data/src/core/lib/surface/channel_init.cc +23 -76
  303. data/src/core/lib/surface/channel_init.h +52 -44
  304. data/src/core/lib/surface/completion_queue.cc +6 -5
  305. data/src/core/lib/surface/init.cc +0 -39
  306. data/src/core/lib/surface/init_secure.cc +17 -14
  307. data/src/core/lib/surface/lame_client.cc +18 -11
  308. data/src/core/lib/surface/lame_client.h +1 -1
  309. data/src/core/lib/surface/server.cc +25 -17
  310. data/src/core/lib/surface/server.h +17 -10
  311. data/src/core/lib/surface/validate_metadata.cc +5 -2
  312. data/src/core/lib/surface/version.cc +2 -2
  313. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  314. data/src/core/lib/transport/error_utils.cc +42 -17
  315. data/src/core/lib/transport/error_utils.h +1 -1
  316. data/src/core/lib/transport/metadata.cc +31 -10
  317. data/src/core/lib/transport/metadata.h +2 -1
  318. data/src/core/lib/transport/metadata_batch.cc +35 -371
  319. data/src/core/lib/transport/metadata_batch.h +905 -71
  320. data/src/core/lib/transport/parsed_metadata.h +263 -0
  321. data/src/core/lib/transport/pid_controller.cc +4 -4
  322. data/src/core/lib/transport/static_metadata.cc +714 -846
  323. data/src/core/lib/transport/static_metadata.h +115 -379
  324. data/src/core/lib/transport/status_metadata.cc +1 -0
  325. data/src/core/lib/transport/transport.cc +4 -5
  326. data/src/core/lib/transport/transport_op_string.cc +40 -20
  327. data/src/core/plugin_registry/grpc_plugin_registry.cc +64 -43
  328. data/src/core/tsi/alts/crypt/aes_gcm.cc +3 -1
  329. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
  330. data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
  331. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -2
  332. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
  333. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  334. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
  335. data/src/core/tsi/fake_transport_security.cc +15 -7
  336. data/src/core/tsi/local_transport_security.cc +36 -73
  337. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -50
  338. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -3
  339. data/src/core/tsi/ssl_transport_security.cc +10 -2
  340. data/src/core/tsi/transport_security.cc +12 -0
  341. data/src/core/tsi/transport_security.h +16 -1
  342. data/src/core/tsi/transport_security_interface.h +26 -0
  343. data/src/ruby/ext/grpc/extconf.rb +12 -9
  344. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
  345. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
  346. data/src/ruby/lib/grpc/version.rb +1 -1
  347. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
  348. data/src/ruby/spec/client_server_spec.rb +1 -1
  349. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
  350. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -6
  351. data/third_party/address_sorting/address_sorting_posix.c +1 -0
  352. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +20 -21
  353. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +104 -114
  354. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +13 -0
  355. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
  356. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
  357. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
  358. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
  359. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
  360. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
  361. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +3 -6
  362. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
  363. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
  364. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
  365. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
  366. data/third_party/boringssl-with-bazel/src/crypto/internal.h +39 -0
  367. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
  368. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +0 -1
  369. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +72 -45
  370. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -1
  371. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +2 -2
  372. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +479 -15
  373. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -564
  374. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +0 -1
  375. data/third_party/re2/re2/compile.cc +91 -109
  376. data/third_party/re2/re2/dfa.cc +27 -39
  377. data/third_party/re2/re2/filtered_re2.cc +18 -2
  378. data/third_party/re2/re2/filtered_re2.h +10 -5
  379. data/third_party/re2/re2/nfa.cc +1 -1
  380. data/third_party/re2/re2/parse.cc +42 -23
  381. data/third_party/re2/re2/perl_groups.cc +34 -34
  382. data/third_party/re2/re2/prefilter.cc +3 -2
  383. data/third_party/re2/re2/prog.cc +182 -4
  384. data/third_party/re2/re2/prog.h +28 -9
  385. data/third_party/re2/re2/re2.cc +87 -118
  386. data/third_party/re2/re2/re2.h +156 -141
  387. data/third_party/re2/re2/regexp.cc +12 -5
  388. data/third_party/re2/re2/regexp.h +8 -2
  389. data/third_party/re2/re2/set.cc +31 -9
  390. data/third_party/re2/re2/set.h +9 -4
  391. data/third_party/re2/re2/simplify.cc +11 -3
  392. data/third_party/re2/re2/tostring.cc +1 -1
  393. data/third_party/re2/re2/walker-inl.h +1 -1
  394. data/third_party/re2/util/mutex.h +2 -2
  395. data/third_party/re2/util/pcre.h +3 -3
  396. metadata +78 -66
  397. data/include/grpc/event_engine/slice_allocator.h +0 -71
  398. data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
  399. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
  400. data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
  401. data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
  402. data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
  403. data/src/core/ext/transport/chttp2/client/authority.h +0 -36
  404. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -67
  405. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
  406. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
  407. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
  408. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
  409. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -130
  410. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -83
  411. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
  412. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
  413. data/src/core/lib/iomgr/udp_server.cc +0 -747
  414. data/src/core/lib/iomgr/udp_server.h +0 -103
  415. data/src/core/lib/transport/authority_override.cc +0 -40
  416. data/src/core/lib/transport/authority_override.h +0 -37
@@ -32,8 +32,6 @@ typedef struct { uint32_t words[16]; } block_t;
32
32
 
33
33
  OPENSSL_STATIC_ASSERT(sizeof(block_t) == 64, "block_t has padding");
34
34
 
35
- #define R(a, b) (((a) << (b)) | ((a) >> (32 - (b))))
36
-
37
35
  // salsa208_word_specification implements the Salsa20/8 core function, also
38
36
  // described in RFC 7914, section 3. It modifies the block at |inout|
39
37
  // in-place.
@@ -42,38 +40,38 @@ static void salsa208_word_specification(block_t *inout) {
42
40
  OPENSSL_memcpy(&x, inout, sizeof(x));
43
41
 
44
42
  for (int i = 8; i > 0; i -= 2) {
45
- x.words[4] ^= R(x.words[0] + x.words[12], 7);
46
- x.words[8] ^= R(x.words[4] + x.words[0], 9);
47
- x.words[12] ^= R(x.words[8] + x.words[4], 13);
48
- x.words[0] ^= R(x.words[12] + x.words[8], 18);
49
- x.words[9] ^= R(x.words[5] + x.words[1], 7);
50
- x.words[13] ^= R(x.words[9] + x.words[5], 9);
51
- x.words[1] ^= R(x.words[13] + x.words[9], 13);
52
- x.words[5] ^= R(x.words[1] + x.words[13], 18);
53
- x.words[14] ^= R(x.words[10] + x.words[6], 7);
54
- x.words[2] ^= R(x.words[14] + x.words[10], 9);
55
- x.words[6] ^= R(x.words[2] + x.words[14], 13);
56
- x.words[10] ^= R(x.words[6] + x.words[2], 18);
57
- x.words[3] ^= R(x.words[15] + x.words[11], 7);
58
- x.words[7] ^= R(x.words[3] + x.words[15], 9);
59
- x.words[11] ^= R(x.words[7] + x.words[3], 13);
60
- x.words[15] ^= R(x.words[11] + x.words[7], 18);
61
- x.words[1] ^= R(x.words[0] + x.words[3], 7);
62
- x.words[2] ^= R(x.words[1] + x.words[0], 9);
63
- x.words[3] ^= R(x.words[2] + x.words[1], 13);
64
- x.words[0] ^= R(x.words[3] + x.words[2], 18);
65
- x.words[6] ^= R(x.words[5] + x.words[4], 7);
66
- x.words[7] ^= R(x.words[6] + x.words[5], 9);
67
- x.words[4] ^= R(x.words[7] + x.words[6], 13);
68
- x.words[5] ^= R(x.words[4] + x.words[7], 18);
69
- x.words[11] ^= R(x.words[10] + x.words[9], 7);
70
- x.words[8] ^= R(x.words[11] + x.words[10], 9);
71
- x.words[9] ^= R(x.words[8] + x.words[11], 13);
72
- x.words[10] ^= R(x.words[9] + x.words[8], 18);
73
- x.words[12] ^= R(x.words[15] + x.words[14], 7);
74
- x.words[13] ^= R(x.words[12] + x.words[15], 9);
75
- x.words[14] ^= R(x.words[13] + x.words[12], 13);
76
- x.words[15] ^= R(x.words[14] + x.words[13], 18);
43
+ x.words[4] ^= CRYPTO_rotl_u32(x.words[0] + x.words[12], 7);
44
+ x.words[8] ^= CRYPTO_rotl_u32(x.words[4] + x.words[0], 9);
45
+ x.words[12] ^= CRYPTO_rotl_u32(x.words[8] + x.words[4], 13);
46
+ x.words[0] ^= CRYPTO_rotl_u32(x.words[12] + x.words[8], 18);
47
+ x.words[9] ^= CRYPTO_rotl_u32(x.words[5] + x.words[1], 7);
48
+ x.words[13] ^= CRYPTO_rotl_u32(x.words[9] + x.words[5], 9);
49
+ x.words[1] ^= CRYPTO_rotl_u32(x.words[13] + x.words[9], 13);
50
+ x.words[5] ^= CRYPTO_rotl_u32(x.words[1] + x.words[13], 18);
51
+ x.words[14] ^= CRYPTO_rotl_u32(x.words[10] + x.words[6], 7);
52
+ x.words[2] ^= CRYPTO_rotl_u32(x.words[14] + x.words[10], 9);
53
+ x.words[6] ^= CRYPTO_rotl_u32(x.words[2] + x.words[14], 13);
54
+ x.words[10] ^= CRYPTO_rotl_u32(x.words[6] + x.words[2], 18);
55
+ x.words[3] ^= CRYPTO_rotl_u32(x.words[15] + x.words[11], 7);
56
+ x.words[7] ^= CRYPTO_rotl_u32(x.words[3] + x.words[15], 9);
57
+ x.words[11] ^= CRYPTO_rotl_u32(x.words[7] + x.words[3], 13);
58
+ x.words[15] ^= CRYPTO_rotl_u32(x.words[11] + x.words[7], 18);
59
+ x.words[1] ^= CRYPTO_rotl_u32(x.words[0] + x.words[3], 7);
60
+ x.words[2] ^= CRYPTO_rotl_u32(x.words[1] + x.words[0], 9);
61
+ x.words[3] ^= CRYPTO_rotl_u32(x.words[2] + x.words[1], 13);
62
+ x.words[0] ^= CRYPTO_rotl_u32(x.words[3] + x.words[2], 18);
63
+ x.words[6] ^= CRYPTO_rotl_u32(x.words[5] + x.words[4], 7);
64
+ x.words[7] ^= CRYPTO_rotl_u32(x.words[6] + x.words[5], 9);
65
+ x.words[4] ^= CRYPTO_rotl_u32(x.words[7] + x.words[6], 13);
66
+ x.words[5] ^= CRYPTO_rotl_u32(x.words[4] + x.words[7], 18);
67
+ x.words[11] ^= CRYPTO_rotl_u32(x.words[10] + x.words[9], 7);
68
+ x.words[8] ^= CRYPTO_rotl_u32(x.words[11] + x.words[10], 9);
69
+ x.words[9] ^= CRYPTO_rotl_u32(x.words[8] + x.words[11], 13);
70
+ x.words[10] ^= CRYPTO_rotl_u32(x.words[9] + x.words[8], 18);
71
+ x.words[12] ^= CRYPTO_rotl_u32(x.words[15] + x.words[14], 7);
72
+ x.words[13] ^= CRYPTO_rotl_u32(x.words[12] + x.words[15], 9);
73
+ x.words[14] ^= CRYPTO_rotl_u32(x.words[13] + x.words[12], 13);
74
+ x.words[15] ^= CRYPTO_rotl_u32(x.words[14] + x.words[13], 18);
77
75
  }
78
76
 
79
77
  for (int i = 0; i < 16; ++i) {
@@ -75,10 +75,8 @@ BIGNUM *BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) {
75
75
  if (ret == NULL) {
76
76
  ret = BN_new();
77
77
  }
78
- if (ret == NULL) {
79
- goto end;
80
- }
81
- if (!BN_set_word(ret, BN_is_bit_set(a, 0))) {
78
+ if (ret == NULL ||
79
+ !BN_set_word(ret, BN_is_bit_set(a, 0))) {
82
80
  if (ret != in) {
83
81
  BN_free(ret);
84
82
  }
@@ -88,17 +86,15 @@ BIGNUM *BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) {
88
86
  }
89
87
 
90
88
  OPENSSL_PUT_ERROR(BN, BN_R_P_IS_NOT_PRIME);
91
- return (NULL);
89
+ return NULL;
92
90
  }
93
91
 
94
92
  if (BN_is_zero(a) || BN_is_one(a)) {
95
93
  if (ret == NULL) {
96
94
  ret = BN_new();
97
95
  }
98
- if (ret == NULL) {
99
- goto end;
100
- }
101
- if (!BN_set_word(ret, BN_is_one(a))) {
96
+ if (ret == NULL ||
97
+ !BN_set_word(ret, BN_is_one(a))) {
102
98
  if (ret != in) {
103
99
  BN_free(ret);
104
100
  }
@@ -342,10 +342,10 @@ void DES_set_key(const DES_cblock *key, DES_key_schedule *schedule) {
342
342
 
343
343
  // table contained 0213 4657
344
344
  t2 = ((t << 16L) | (s & 0x0000ffffL)) & 0xffffffffL;
345
- schedule->subkeys[i][0] = ROTATE(t2, 30) & 0xffffffffL;
345
+ schedule->subkeys[i][0] = CRYPTO_rotr_u32(t2, 30);
346
346
 
347
347
  t2 = ((s >> 16L) | (t & 0xffff0000L));
348
- schedule->subkeys[i][1] = ROTATE(t2, 26) & 0xffffffffL;
348
+ schedule->subkeys[i][1] = CRYPTO_rotr_u32(t2, 26);
349
349
  }
350
350
  }
351
351
 
@@ -392,8 +392,8 @@ static void DES_encrypt1(uint32_t *data, const DES_key_schedule *ks, int enc) {
392
392
  // <71755.204@CompuServe.COM> for pointing this out.
393
393
  // clear the top bits on machines with 8byte longs
394
394
  // shift left by 2
395
- r = ROTATE(r, 29) & 0xffffffffL;
396
- l = ROTATE(l, 29) & 0xffffffffL;
395
+ r = CRYPTO_rotr_u32(r, 29);
396
+ l = CRYPTO_rotr_u32(l, 29);
397
397
 
398
398
  // I don't know if it is worth the effort of loop unrolling the
399
399
  // inner loop
@@ -434,8 +434,8 @@ static void DES_encrypt1(uint32_t *data, const DES_key_schedule *ks, int enc) {
434
434
  }
435
435
 
436
436
  // rotate and clear the top bits on machines with 8byte longs
437
- l = ROTATE(l, 3) & 0xffffffffL;
438
- r = ROTATE(r, 3) & 0xffffffffL;
437
+ l = CRYPTO_rotr_u32(l, 3);
438
+ r = CRYPTO_rotr_u32(r, 3);
439
439
 
440
440
  FP(r, l);
441
441
  data[0] = l;
@@ -454,8 +454,8 @@ static void DES_encrypt2(uint32_t *data, const DES_key_schedule *ks, int enc) {
454
454
  // sparc2. Thanks to Richard Outerbridge <71755.204@CompuServe.COM> for
455
455
  // pointing this out.
456
456
  // clear the top bits on machines with 8byte longs
457
- r = ROTATE(r, 29) & 0xffffffffL;
458
- l = ROTATE(l, 29) & 0xffffffffL;
457
+ r = CRYPTO_rotr_u32(r, 29);
458
+ l = CRYPTO_rotr_u32(l, 29);
459
459
 
460
460
  // I don't know if it is worth the effort of loop unrolling the
461
461
  // inner loop
@@ -495,8 +495,8 @@ static void DES_encrypt2(uint32_t *data, const DES_key_schedule *ks, int enc) {
495
495
  D_ENCRYPT(ks, r, l, 0);
496
496
  }
497
497
  // rotate and clear the top bits on machines with 8byte longs
498
- data[0] = ROTATE(l, 3) & 0xffffffffL;
499
- data[1] = ROTATE(r, 3) & 0xffffffffL;
498
+ data[0] = CRYPTO_rotr_u32(l, 3);
499
+ data[1] = CRYPTO_rotr_u32(r, 3);
500
500
  }
501
501
 
502
502
  void DES_encrypt3(uint32_t *data, const DES_key_schedule *ks1,
@@ -782,4 +782,3 @@ void DES_set_key_unchecked(const DES_cblock *key, DES_key_schedule *schedule) {
782
782
  #undef D_ENCRYPT
783
783
  #undef ITERATIONS
784
784
  #undef HALF_ITERATIONS
785
- #undef ROTATE
@@ -218,7 +218,7 @@ how to use xors :-) I got it to its final state.
218
218
  #define D_ENCRYPT(ks, LL, R, S) \
219
219
  do { \
220
220
  LOAD_DATA(ks, R, S, u, t, E0, E1); \
221
- t = ROTATE(t, 4); \
221
+ t = CRYPTO_rotr_u32(t, 4); \
222
222
  (LL) ^= \
223
223
  DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ \
224
224
  DES_SPtrans[4][(u >> 18L) & 0x3f] ^ \
@@ -230,8 +230,6 @@ how to use xors :-) I got it to its final state.
230
230
  #define ITERATIONS 16
231
231
  #define HALF_ITERATIONS 8
232
232
 
233
- #define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
234
-
235
233
 
236
234
  #if defined(__cplusplus)
237
235
  } // extern C
@@ -113,24 +113,22 @@ int MD4_Final(uint8_t out[MD4_DIGEST_LENGTH], MD4_CTX *c) {
113
113
  #define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
114
114
  #define H(b, c, d) ((b) ^ (c) ^ (d))
115
115
 
116
- #define ROTATE(a, n) (((a) << (n)) | ((a) >> (32 - (n))))
117
-
118
116
  #define R0(a, b, c, d, k, s, t) \
119
117
  do { \
120
118
  (a) += ((k) + (t) + F((b), (c), (d))); \
121
- (a) = ROTATE(a, s); \
119
+ (a) = CRYPTO_rotl_u32(a, s); \
122
120
  } while (0)
123
121
 
124
122
  #define R1(a, b, c, d, k, s, t) \
125
123
  do { \
126
124
  (a) += ((k) + (t) + G((b), (c), (d))); \
127
- (a) = ROTATE(a, s); \
125
+ (a) = CRYPTO_rotl_u32(a, s); \
128
126
  } while (0)
129
127
 
130
128
  #define R2(a, b, c, d, k, s, t) \
131
129
  do { \
132
130
  (a) += ((k) + (t) + H((b), (c), (d))); \
133
- (a) = ROTATE(a, s); \
131
+ (a) = CRYPTO_rotl_u32(a, s); \
134
132
  } while (0)
135
133
 
136
134
  void md4_block_data_order(uint32_t *state, const uint8_t *data, size_t num) {
@@ -237,7 +235,6 @@ void md4_block_data_order(uint32_t *state, const uint8_t *data, size_t num) {
237
235
  #undef F
238
236
  #undef G
239
237
  #undef H
240
- #undef ROTATE
241
238
  #undef R0
242
239
  #undef R1
243
240
  #undef R2
@@ -119,33 +119,31 @@ int MD5_Final(uint8_t out[MD5_DIGEST_LENGTH], MD5_CTX *c) {
119
119
  #define H(b, c, d) ((b) ^ (c) ^ (d))
120
120
  #define I(b, c, d) (((~(d)) | (b)) ^ (c))
121
121
 
122
- #define ROTATE(a, n) (((a) << (n)) | ((a) >> (32 - (n))))
123
-
124
122
  #define R0(a, b, c, d, k, s, t) \
125
123
  do { \
126
124
  (a) += ((k) + (t) + F((b), (c), (d))); \
127
- (a) = ROTATE(a, s); \
125
+ (a) = CRYPTO_rotl_u32(a, s); \
128
126
  (a) += (b); \
129
127
  } while (0)
130
128
 
131
129
  #define R1(a, b, c, d, k, s, t) \
132
130
  do { \
133
131
  (a) += ((k) + (t) + G((b), (c), (d))); \
134
- (a) = ROTATE(a, s); \
132
+ (a) = CRYPTO_rotl_u32(a, s); \
135
133
  (a) += (b); \
136
134
  } while (0)
137
135
 
138
136
  #define R2(a, b, c, d, k, s, t) \
139
137
  do { \
140
138
  (a) += ((k) + (t) + H((b), (c), (d))); \
141
- (a) = ROTATE(a, s); \
139
+ (a) = CRYPTO_rotl_u32(a, s); \
142
140
  (a) += (b); \
143
141
  } while (0)
144
142
 
145
143
  #define R3(a, b, c, d, k, s, t) \
146
144
  do { \
147
145
  (a) += ((k) + (t) + I((b), (c), (d))); \
148
- (a) = ROTATE(a, s); \
146
+ (a) = CRYPTO_rotl_u32(a, s); \
149
147
  (a) += (b); \
150
148
  } while (0)
151
149
 
@@ -280,7 +278,6 @@ static void md5_block_data_order(uint32_t *state, const uint8_t *data,
280
278
  #undef G
281
279
  #undef H
282
280
  #undef I
283
- #undef ROTATE
284
281
  #undef R0
285
282
  #undef R1
286
283
  #undef R2
@@ -111,11 +111,10 @@ int SHA1_Final(uint8_t out[SHA_DIGEST_LENGTH], SHA_CTX *c) {
111
111
  return 1;
112
112
  }
113
113
 
114
- #define ROTATE(a, n) (((a) << (n)) | ((a) >> (32 - (n))))
115
- #define Xupdate(a, ix, ia, ib, ic, id) \
116
- do { \
117
- (a) = ((ia) ^ (ib) ^ (ic) ^ (id)); \
118
- (ix) = (a) = ROTATE((a), 1); \
114
+ #define Xupdate(a, ix, ia, ib, ic, id) \
115
+ do { \
116
+ (a) = ((ia) ^ (ib) ^ (ic) ^ (id)); \
117
+ (ix) = (a) = CRYPTO_rotl_u32((a), 1); \
119
118
  } while (0)
120
119
 
121
120
  #define K_00_19 0x5a827999UL
@@ -133,45 +132,47 @@ int SHA1_Final(uint8_t out[SHA_DIGEST_LENGTH], SHA_CTX *c) {
133
132
  #define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
134
133
  #define F_60_79(b, c, d) F_20_39(b, c, d)
135
134
 
136
- #define BODY_00_15(i, a, b, c, d, e, f, xi) \
137
- do { \
138
- (f) = (xi) + (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
139
- (b) = ROTATE((b), 30); \
135
+ #define BODY_00_15(i, a, b, c, d, e, f, xi) \
136
+ do { \
137
+ (f) = (xi) + (e) + K_00_19 + CRYPTO_rotl_u32((a), 5) + \
138
+ F_00_19((b), (c), (d)); \
139
+ (b) = CRYPTO_rotl_u32((b), 30); \
140
140
  } while (0)
141
141
 
142
- #define BODY_16_19(i, a, b, c, d, e, f, xi, xa, xb, xc, xd) \
143
- do { \
144
- Xupdate(f, xi, xa, xb, xc, xd); \
145
- (f) += (e) + K_00_19 + ROTATE((a), 5) + F_00_19((b), (c), (d)); \
146
- (b) = ROTATE((b), 30); \
142
+ #define BODY_16_19(i, a, b, c, d, e, f, xi, xa, xb, xc, xd) \
143
+ do { \
144
+ Xupdate(f, xi, xa, xb, xc, xd); \
145
+ (f) += (e) + K_00_19 + CRYPTO_rotl_u32((a), 5) + F_00_19((b), (c), (d)); \
146
+ (b) = CRYPTO_rotl_u32((b), 30); \
147
147
  } while (0)
148
148
 
149
- #define BODY_20_31(i, a, b, c, d, e, f, xi, xa, xb, xc, xd) \
150
- do { \
151
- Xupdate(f, xi, xa, xb, xc, xd); \
152
- (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
153
- (b) = ROTATE((b), 30); \
149
+ #define BODY_20_31(i, a, b, c, d, e, f, xi, xa, xb, xc, xd) \
150
+ do { \
151
+ Xupdate(f, xi, xa, xb, xc, xd); \
152
+ (f) += (e) + K_20_39 + CRYPTO_rotl_u32((a), 5) + F_20_39((b), (c), (d)); \
153
+ (b) = CRYPTO_rotl_u32((b), 30); \
154
154
  } while (0)
155
155
 
156
- #define BODY_32_39(i, a, b, c, d, e, f, xa, xb, xc, xd) \
157
- do { \
158
- Xupdate(f, xa, xa, xb, xc, xd); \
159
- (f) += (e) + K_20_39 + ROTATE((a), 5) + F_20_39((b), (c), (d)); \
160
- (b) = ROTATE((b), 30); \
156
+ #define BODY_32_39(i, a, b, c, d, e, f, xa, xb, xc, xd) \
157
+ do { \
158
+ Xupdate(f, xa, xa, xb, xc, xd); \
159
+ (f) += (e) + K_20_39 + CRYPTO_rotl_u32((a), 5) + F_20_39((b), (c), (d)); \
160
+ (b) = CRYPTO_rotl_u32((b), 30); \
161
161
  } while (0)
162
162
 
163
- #define BODY_40_59(i, a, b, c, d, e, f, xa, xb, xc, xd) \
164
- do { \
165
- Xupdate(f, xa, xa, xb, xc, xd); \
166
- (f) += (e) + K_40_59 + ROTATE((a), 5) + F_40_59((b), (c), (d)); \
167
- (b) = ROTATE((b), 30); \
163
+ #define BODY_40_59(i, a, b, c, d, e, f, xa, xb, xc, xd) \
164
+ do { \
165
+ Xupdate(f, xa, xa, xb, xc, xd); \
166
+ (f) += (e) + K_40_59 + CRYPTO_rotl_u32((a), 5) + F_40_59((b), (c), (d)); \
167
+ (b) = CRYPTO_rotl_u32((b), 30); \
168
168
  } while (0)
169
169
 
170
- #define BODY_60_79(i, a, b, c, d, e, f, xa, xb, xc, xd) \
171
- do { \
172
- Xupdate(f, xa, xa, xb, xc, xd); \
173
- (f) = (xa) + (e) + K_60_79 + ROTATE((a), 5) + F_60_79((b), (c), (d)); \
174
- (b) = ROTATE((b), 30); \
170
+ #define BODY_60_79(i, a, b, c, d, e, f, xa, xb, xc, xd) \
171
+ do { \
172
+ Xupdate(f, xa, xa, xb, xc, xd); \
173
+ (f) = (xa) + (e) + K_60_79 + CRYPTO_rotl_u32((a), 5) + \
174
+ F_60_79((b), (c), (d)); \
175
+ (b) = CRYPTO_rotl_u32((b), 30); \
175
176
  } while (0)
176
177
 
177
178
  #ifdef X
@@ -338,7 +339,6 @@ static void sha1_block_data_order(uint32_t *state, const uint8_t *data,
338
339
  }
339
340
  #endif
340
341
 
341
- #undef ROTATE
342
342
  #undef Xupdate
343
343
  #undef K_00_19
344
344
  #undef K_20_39
@@ -184,15 +184,17 @@ static const uint32_t K256[64] = {
184
184
  0x682e6ff3UL, 0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL,
185
185
  0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL};
186
186
 
187
- #define ROTATE(a, n) (((a) << (n)) | ((a) >> (32 - (n))))
188
-
189
- // FIPS specification refers to right rotations, while our ROTATE macro
190
- // is left one. This is why you might notice that rotation coefficients
191
- // differ from those observed in FIPS document by 32-N...
192
- #define Sigma0(x) (ROTATE((x), 30) ^ ROTATE((x), 19) ^ ROTATE((x), 10))
193
- #define Sigma1(x) (ROTATE((x), 26) ^ ROTATE((x), 21) ^ ROTATE((x), 7))
194
- #define sigma0(x) (ROTATE((x), 25) ^ ROTATE((x), 14) ^ ((x) >> 3))
195
- #define sigma1(x) (ROTATE((x), 15) ^ ROTATE((x), 13) ^ ((x) >> 10))
187
+ // See FIPS 180-4, section 4.1.2.
188
+ #define Sigma0(x) \
189
+ (CRYPTO_rotr_u32((x), 2) ^ CRYPTO_rotr_u32((x), 13) ^ \
190
+ CRYPTO_rotr_u32((x), 22))
191
+ #define Sigma1(x) \
192
+ (CRYPTO_rotr_u32((x), 6) ^ CRYPTO_rotr_u32((x), 11) ^ \
193
+ CRYPTO_rotr_u32((x), 25))
194
+ #define sigma0(x) \
195
+ (CRYPTO_rotr_u32((x), 7) ^ CRYPTO_rotr_u32((x), 18) ^ ((x) >> 3))
196
+ #define sigma1(x) \
197
+ (CRYPTO_rotr_u32((x), 17) ^ CRYPTO_rotr_u32((x), 19) ^ ((x) >> 10))
196
198
 
197
199
  #define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
198
200
  #define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
@@ -309,7 +311,6 @@ void SHA256_TransformBlocks(uint32_t state[8], const uint8_t *data,
309
311
  sha256_block_data_order(state, data, num_blocks);
310
312
  }
311
313
 
312
- #undef ROTATE
313
314
  #undef Sigma0
314
315
  #undef Sigma1
315
316
  #undef sigma0
@@ -321,42 +321,16 @@ static const uint64_t K512[80] = {
321
321
  UINT64_C(0x5fcb6fab3ad6faec), UINT64_C(0x6c44198c4a475817),
322
322
  };
323
323
 
324
- #if defined(__GNUC__) && __GNUC__ >= 2 && !defined(OPENSSL_NO_ASM)
325
- #if defined(__x86_64) || defined(__x86_64__)
326
- #define ROTR(a, n) \
327
- ({ \
328
- uint64_t ret; \
329
- __asm__("rorq %1, %0" : "=r"(ret) : "J"(n), "0"(a) : "cc"); \
330
- ret; \
331
- })
332
- #elif(defined(_ARCH_PPC) && defined(__64BIT__)) || defined(_ARCH_PPC64)
333
- #define ROTR(a, n) \
334
- ({ \
335
- uint64_t ret; \
336
- __asm__("rotrdi %0, %1, %2" : "=r"(ret) : "r"(a), "K"(n)); \
337
- ret; \
338
- })
339
- #elif defined(__aarch64__)
340
- #define ROTR(a, n) \
341
- ({ \
342
- uint64_t ret; \
343
- __asm__("ror %0, %1, %2" : "=r"(ret) : "r"(a), "I"(n)); \
344
- ret; \
345
- })
346
- #endif
347
- #elif defined(_MSC_VER) && defined(_WIN64)
348
- #pragma intrinsic(_rotr64)
349
- #define ROTR(a, n) _rotr64((a), n)
350
- #endif
351
-
352
- #ifndef ROTR
353
- #define ROTR(x, s) (((x) >> s) | (x) << (64 - s))
354
- #endif
355
-
356
- #define Sigma0(x) (ROTR((x), 28) ^ ROTR((x), 34) ^ ROTR((x), 39))
357
- #define Sigma1(x) (ROTR((x), 14) ^ ROTR((x), 18) ^ ROTR((x), 41))
358
- #define sigma0(x) (ROTR((x), 1) ^ ROTR((x), 8) ^ ((x) >> 7))
359
- #define sigma1(x) (ROTR((x), 19) ^ ROTR((x), 61) ^ ((x) >> 6))
324
+ #define Sigma0(x) \
325
+ (CRYPTO_rotr_u64((x), 28) ^ CRYPTO_rotr_u64((x), 34) ^ \
326
+ CRYPTO_rotr_u64((x), 39))
327
+ #define Sigma1(x) \
328
+ (CRYPTO_rotr_u64((x), 14) ^ CRYPTO_rotr_u64((x), 18) ^ \
329
+ CRYPTO_rotr_u64((x), 41))
330
+ #define sigma0(x) \
331
+ (CRYPTO_rotr_u64((x), 1) ^ CRYPTO_rotr_u64((x), 8) ^ ((x) >> 7))
332
+ #define sigma1(x) \
333
+ (CRYPTO_rotr_u64((x), 19) ^ CRYPTO_rotr_u64((x), 61) ^ ((x) >> 6))
360
334
 
361
335
  #define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
362
336
  #define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
@@ -524,7 +498,6 @@ static void sha512_block_data_order(uint64_t *state, const uint8_t *in,
524
498
 
525
499
  #endif // !SHA512_ASM
526
500
 
527
- #undef ROTR
528
501
  #undef Sigma0
529
502
  #undef Sigma1
530
503
  #undef sigma0
@@ -890,6 +890,45 @@ static inline void CRYPTO_store_word_le(void *out, crypto_word_t v) {
890
890
  }
891
891
 
892
892
 
893
+ // Bit rotation functions.
894
+ //
895
+ // Note these functions use |(-shift) & 31|, etc., because shifting by the bit
896
+ // width is undefined. Both Clang and GCC recognize this pattern as a rotation,
897
+ // but MSVC does not. Instead, we call MSVC's built-in functions.
898
+
899
+ static inline uint32_t CRYPTO_rotl_u32(uint32_t value, int shift) {
900
+ #if defined(_MSC_VER)
901
+ return _rotl(value, shift);
902
+ #else
903
+ return (value << shift) | (value >> ((-shift) & 31));
904
+ #endif
905
+ }
906
+
907
+ static inline uint32_t CRYPTO_rotr_u32(uint32_t value, int shift) {
908
+ #if defined(_MSC_VER)
909
+ return _rotr(value, shift);
910
+ #else
911
+ return (value >> shift) | (value << ((-shift) & 31));
912
+ #endif
913
+ }
914
+
915
+ static inline uint64_t CRYPTO_rotl_u64(uint64_t value, int shift) {
916
+ #if defined(_MSC_VER)
917
+ return _rotl64(value, shift);
918
+ #else
919
+ return (value << shift) | (value >> ((-shift) & 63));
920
+ #endif
921
+ }
922
+
923
+ static inline uint64_t CRYPTO_rotr_u64(uint64_t value, int shift) {
924
+ #if defined(_MSC_VER)
925
+ return _rotr64(value, shift);
926
+ #else
927
+ return (value >> shift) | (value << ((-shift) & 63));
928
+ #endif
929
+ }
930
+
931
+
893
932
  // FIPS functions.
894
933
 
895
934
  #if defined(BORINGSSL_FIPS)
@@ -23,18 +23,18 @@
23
23
  static void siphash_round(uint64_t v[4]) {
24
24
  v[0] += v[1];
25
25
  v[2] += v[3];
26
- v[1] = (v[1] << 13) | (v[1] >> (64 - 13));
27
- v[3] = (v[3] << 16) | (v[3] >> (64 - 16));
26
+ v[1] = CRYPTO_rotl_u64(v[1], 13);
27
+ v[3] = CRYPTO_rotl_u64(v[3], 16);
28
28
  v[1] ^= v[0];
29
29
  v[3] ^= v[2];
30
- v[0] = (v[0] << 32) | (v[0] >> 32);
30
+ v[0] = CRYPTO_rotl_u64(v[0], 32);
31
31
  v[2] += v[1];
32
32
  v[0] += v[3];
33
- v[1] = (v[1] << 17) | (v[1] >> (64 - 17));
34
- v[3] = (v[3] << 21) | (v[3] >> (64 - 21));
33
+ v[1] = CRYPTO_rotl_u64(v[1], 17);
34
+ v[3] = CRYPTO_rotl_u64(v[3], 21);
35
35
  v[1] ^= v[2];
36
36
  v[3] ^= v[0];
37
- v[2] = (v[2] << 32) | (v[2] >> 32);
37
+ v[2] = CRYPTO_rotl_u64(v[2], 32);
38
38
  }
39
39
 
40
40
  uint64_t SIPHASH_24(const uint64_t key[2], const uint8_t *input,
@@ -64,7 +64,6 @@
64
64
  #include <openssl/mem.h>
65
65
  #include <openssl/obj.h>
66
66
  #include <openssl/thread.h>
67
- #include <openssl/x509_vfy.h>
68
67
  #include <openssl/x509v3.h>
69
68
 
70
69
  #include "../internal.h"