grpc 1.55.0 → 1.56.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 (374) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +100 -68
  3. data/include/grpc/event_engine/event_engine.h +4 -3
  4. data/include/grpc/grpc_audit_logging.h +96 -0
  5. data/include/grpc/module.modulemap +2 -0
  6. data/include/grpc/support/json.h +218 -0
  7. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +5 -0
  8. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
  9. data/src/core/ext/filters/client_channel/channel_connectivity.cc +4 -4
  10. data/src/core/ext/filters/client_channel/client_channel.cc +86 -104
  11. data/src/core/ext/filters/client_channel/client_channel.h +6 -0
  12. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -18
  13. data/src/core/ext/filters/client_channel/client_channel_internal.h +16 -21
  14. data/src/core/ext/filters/client_channel/config_selector.h +9 -24
  15. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -0
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +5 -4
  17. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
  18. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
  19. data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
  20. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +2 -7
  21. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +52 -20
  22. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +23 -2
  23. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -6
  24. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +1 -9
  25. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +16 -7
  26. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +18 -1
  27. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +12 -9
  28. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -4
  29. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +36 -13
  30. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +76 -6
  31. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +32 -39
  32. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +4 -10
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +52 -47
  34. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -9
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -16
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -43
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +7 -12
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -19
  39. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +35 -33
  40. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +29 -4
  41. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +1 -1
  42. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +28 -27
  43. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +163 -46
  44. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +16 -1
  45. data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -0
  46. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +10 -40
  47. data/src/core/ext/filters/client_channel/subchannel.cc +10 -196
  48. data/src/core/ext/filters/client_channel/subchannel.h +3 -43
  49. data/src/core/ext/filters/http/message_compress/compression_filter.cc +5 -5
  50. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +100 -6
  51. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -8
  52. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -3
  53. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +16 -1
  54. data/src/core/ext/transport/chttp2/transport/flow_control.cc +46 -95
  55. data/src/core/ext/transport/chttp2/transport/internal.h +1 -15
  56. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +11 -2
  57. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -0
  58. data/src/core/ext/xds/certificate_provider_store.cc +4 -9
  59. data/src/core/ext/xds/certificate_provider_store.h +1 -1
  60. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
  61. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
  62. data/src/core/ext/xds/xds_api.cc +9 -6
  63. data/src/core/ext/xds/xds_api.h +3 -2
  64. data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
  65. data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
  66. data/src/core/ext/xds/xds_bootstrap_grpc.cc +21 -9
  67. data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -0
  68. data/src/core/ext/xds/xds_client.cc +5 -4
  69. data/src/core/ext/xds/xds_client_stats.h +1 -1
  70. data/src/core/ext/xds/xds_cluster.cc +20 -19
  71. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +11 -8
  72. data/src/core/ext/xds/xds_common_types.cc +3 -1
  73. data/src/core/ext/xds/xds_http_fault_filter.cc +16 -13
  74. data/src/core/ext/xds/xds_http_fault_filter.h +2 -1
  75. data/src/core/ext/xds/xds_http_filters.h +4 -2
  76. data/src/core/ext/xds/xds_http_rbac_filter.cc +154 -67
  77. data/src/core/ext/xds/xds_http_rbac_filter.h +2 -1
  78. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +15 -11
  79. data/src/core/ext/xds/xds_http_stateful_session_filter.h +2 -1
  80. data/src/core/ext/xds/xds_lb_policy_registry.cc +22 -16
  81. data/src/core/ext/xds/xds_listener.cc +1 -0
  82. data/src/core/ext/xds/xds_route_config.cc +40 -3
  83. data/src/core/ext/xds/xds_routing.cc +2 -2
  84. data/src/core/ext/xds/xds_transport_grpc.cc +3 -1
  85. data/src/core/lib/avl/avl.h +5 -0
  86. data/src/core/lib/channel/channel_args.cc +80 -22
  87. data/src/core/lib/channel/channel_args.h +34 -1
  88. data/src/core/lib/channel/channel_trace.cc +16 -12
  89. data/src/core/lib/channel/channelz.cc +159 -132
  90. data/src/core/lib/channel/channelz.h +42 -35
  91. data/src/core/lib/channel/channelz_registry.cc +23 -20
  92. data/src/core/lib/channel/connected_channel.cc +17 -6
  93. data/src/core/lib/channel/promise_based_filter.cc +0 -4
  94. data/src/core/lib/channel/promise_based_filter.h +2 -0
  95. data/src/core/lib/compression/compression_internal.cc +2 -5
  96. data/src/core/lib/config/config_vars.cc +20 -18
  97. data/src/core/lib/config/config_vars.h +4 -4
  98. data/src/core/lib/config/load_config.cc +13 -0
  99. data/src/core/lib/config/load_config.h +6 -0
  100. data/src/core/lib/debug/event_log.h +1 -1
  101. data/src/core/lib/debug/stats_data.h +1 -1
  102. data/src/core/lib/debug/trace.cc +24 -55
  103. data/src/core/lib/debug/trace.h +3 -1
  104. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
  105. data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
  106. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
  107. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
  108. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
  109. data/src/core/lib/event_engine/default_event_engine.cc +13 -1
  110. data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
  111. data/src/core/lib/event_engine/poller.h +2 -2
  112. data/src/core/lib/event_engine/posix.h +4 -0
  113. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
  114. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
  115. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -0
  116. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +33 -19
  117. data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -1
  118. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -4
  119. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -8
  120. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
  121. data/src/core/lib/event_engine/shim.cc +7 -1
  122. data/src/core/lib/event_engine/{thread_pool.cc → thread_pool/original_thread_pool.cc} +28 -25
  123. data/src/core/lib/event_engine/{thread_pool.h → thread_pool/original_thread_pool.h} +11 -15
  124. data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
  125. data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +17 -15
  126. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
  127. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
  128. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
  129. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
  130. data/src/core/lib/event_engine/windows/iocp.cc +4 -3
  131. data/src/core/lib/event_engine/windows/iocp.h +3 -3
  132. data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
  133. data/src/core/lib/event_engine/windows/win_socket.h +4 -4
  134. data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -10
  135. data/src/core/lib/event_engine/windows/windows_endpoint.h +3 -2
  136. data/src/core/lib/event_engine/windows/windows_engine.cc +19 -17
  137. data/src/core/lib/event_engine/windows/windows_engine.h +6 -6
  138. data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
  139. data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
  140. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
  141. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
  142. data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
  143. data/src/core/lib/experiments/config.cc +38 -7
  144. data/src/core/lib/experiments/config.h +16 -0
  145. data/src/core/lib/experiments/experiments.cc +67 -20
  146. data/src/core/lib/experiments/experiments.h +27 -21
  147. data/src/core/lib/gpr/log_internal.h +55 -0
  148. data/src/core/lib/gprpp/crash.cc +10 -0
  149. data/src/core/lib/gprpp/crash.h +3 -0
  150. data/src/core/lib/gprpp/per_cpu.cc +33 -0
  151. data/src/core/lib/gprpp/per_cpu.h +29 -6
  152. data/src/core/lib/gprpp/time.cc +1 -0
  153. data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
  154. data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
  155. data/src/core/lib/iomgr/ev_apple.cc +12 -12
  156. data/src/core/lib/iomgr/ev_epoll1_linux.cc +10 -3
  157. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +15 -1
  158. data/src/core/lib/iomgr/iocp_windows.cc +24 -3
  159. data/src/core/lib/iomgr/iocp_windows.h +11 -0
  160. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
  161. data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -2
  162. data/src/core/lib/iomgr/socket_windows.cc +61 -7
  163. data/src/core/lib/iomgr/socket_windows.h +9 -2
  164. data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
  165. data/src/core/lib/iomgr/tcp_server_posix.cc +148 -107
  166. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
  167. data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
  168. data/src/core/lib/json/json.h +2 -166
  169. data/src/core/lib/json/json_object_loader.cc +8 -9
  170. data/src/core/lib/json/json_object_loader.h +25 -18
  171. data/src/core/lib/json/json_reader.cc +13 -6
  172. data/src/core/lib/json/json_util.cc +6 -11
  173. data/src/core/lib/json/json_writer.cc +7 -8
  174. data/src/core/lib/load_balancing/lb_policy.h +13 -0
  175. data/src/core/lib/load_balancing/lb_policy_registry.cc +2 -1
  176. data/src/core/lib/matchers/matchers.cc +3 -4
  177. data/src/core/lib/matchers/matchers.h +2 -1
  178. data/src/core/lib/promise/activity.cc +5 -0
  179. data/src/core/lib/promise/activity.h +10 -0
  180. data/src/core/lib/promise/detail/promise_factory.h +1 -1
  181. data/src/core/lib/promise/party.cc +31 -13
  182. data/src/core/lib/promise/party.h +11 -2
  183. data/src/core/lib/promise/pipe.h +9 -2
  184. data/src/core/lib/promise/prioritized_race.h +95 -0
  185. data/src/core/lib/promise/sleep.cc +2 -1
  186. data/src/core/lib/resolver/server_address.cc +0 -8
  187. data/src/core/lib/resolver/server_address.h +0 -6
  188. data/src/core/lib/resource_quota/memory_quota.cc +7 -7
  189. data/src/core/lib/resource_quota/memory_quota.h +1 -2
  190. data/src/core/lib/security/authorization/audit_logging.cc +98 -0
  191. data/src/core/lib/security/authorization/audit_logging.h +73 -0
  192. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
  193. data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
  194. data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
  195. data/src/core/lib/security/authorization/rbac_policy.h +19 -2
  196. data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
  197. data/src/core/lib/security/authorization/stdout_logger.h +61 -0
  198. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
  199. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
  200. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
  201. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +19 -12
  202. data/src/core/lib/security/credentials/external/external_account_credentials.cc +4 -2
  203. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -0
  204. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
  205. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
  206. data/src/core/lib/security/credentials/jwt/json_token.cc +15 -14
  207. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -2
  208. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +1 -0
  209. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -0
  210. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -5
  211. data/src/core/lib/security/util/json_util.cc +1 -0
  212. data/src/core/lib/service_config/service_config_call_data.h +49 -20
  213. data/src/core/lib/service_config/service_config_impl.cc +2 -1
  214. data/src/core/lib/surface/call.cc +38 -23
  215. data/src/core/lib/surface/completion_queue.cc +6 -2
  216. data/src/core/lib/surface/version.cc +2 -2
  217. data/src/core/lib/transport/batch_builder.cc +15 -12
  218. data/src/core/lib/transport/batch_builder.h +39 -35
  219. data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
  220. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
  221. data/src/ruby/ext/grpc/extconf.rb +8 -9
  222. data/src/ruby/lib/grpc/version.rb +1 -1
  223. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
  224. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +1 -1
  225. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
  226. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
  227. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
  228. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +6 -4
  229. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -1
  230. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +5 -9
  231. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
  232. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
  233. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
  234. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
  235. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
  236. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
  237. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_openbsd.c +31 -0
  238. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +6 -4
  239. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
  240. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
  241. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
  242. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +18 -6
  243. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +15 -7
  244. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
  245. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
  246. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  247. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +3 -0
  248. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +24 -24
  249. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +1 -1
  250. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +7 -7
  251. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +74 -74
  252. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +1 -2
  253. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +11 -11
  254. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +12 -12
  255. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +14 -15
  256. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
  257. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +10 -10
  258. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +23 -23
  259. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -13
  260. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
  261. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +2 -2
  262. data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
  263. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
  264. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
  265. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
  266. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
  267. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
  268. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
  269. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
  270. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -23
  271. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +21 -16
  272. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
  273. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
  274. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +95 -183
  275. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +71 -0
  276. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
  277. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
  278. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +162 -6
  279. data/third_party/boringssl-with-bazel/src/crypto/internal.h +18 -0
  280. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +18 -11
  281. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
  282. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
  283. data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +3 -13
  284. data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
  285. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
  286. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
  287. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
  288. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +218 -44
  289. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
  290. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -39
  291. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
  292. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
  293. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
  294. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
  295. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -140
  296. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
  297. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -14
  298. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
  299. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
  300. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
  301. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
  302. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
  303. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
  304. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +14 -46
  305. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
  306. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
  307. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1 -1
  308. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
  309. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -4
  310. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +32 -1
  311. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +0 -4
  312. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
  313. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +3 -3
  314. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +28 -0
  315. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
  316. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
  317. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -1
  318. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +5 -0
  319. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +149 -20
  320. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +4 -0
  321. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
  322. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
  323. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +774 -615
  324. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +42 -10
  325. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
  326. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +2 -4
  327. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +24 -16
  328. data/third_party/boringssl-with-bazel/src/ssl/internal.h +65 -18
  329. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
  330. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +187 -193
  331. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +13 -129
  332. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +85 -10
  333. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
  334. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
  335. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
  336. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
  337. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
  338. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
  339. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
  340. data/third_party/cares/cares/include/ares.h +23 -1
  341. data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
  342. data/third_party/cares/cares/include/ares_rules.h +2 -2
  343. data/third_party/cares/cares/include/ares_version.h +3 -3
  344. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
  345. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
  346. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
  347. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
  348. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
  349. data/third_party/cares/cares/src/lib/ares_data.c +16 -0
  350. data/third_party/cares/cares/src/lib/ares_data.h +7 -0
  351. data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
  352. data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
  353. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
  354. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
  355. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
  356. data/third_party/cares/cares/src/lib/ares_init.c +97 -485
  357. data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
  358. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
  359. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
  360. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
  361. data/third_party/cares/cares/src/lib/ares_private.h +30 -16
  362. data/third_party/cares/cares/src/lib/ares_process.c +55 -16
  363. data/third_party/cares/cares/src/lib/ares_query.c +1 -35
  364. data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
  365. data/third_party/cares/cares/src/lib/ares_send.c +5 -7
  366. data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
  367. data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
  368. data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
  369. data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
  370. data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
  371. metadata +48 -12
  372. data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
  373. data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
  374. data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -152,36 +152,36 @@ int ec_GFp_simple_group_get_curve(const EC_GROUP *group, BIGNUM *p, BIGNUM *a,
152
152
  return 1;
153
153
  }
154
154
 
155
- void ec_GFp_simple_point_init(EC_RAW_POINT *point) {
155
+ void ec_GFp_simple_point_init(EC_JACOBIAN *point) {
156
156
  OPENSSL_memset(&point->X, 0, sizeof(EC_FELEM));
157
157
  OPENSSL_memset(&point->Y, 0, sizeof(EC_FELEM));
158
158
  OPENSSL_memset(&point->Z, 0, sizeof(EC_FELEM));
159
159
  }
160
160
 
161
- void ec_GFp_simple_point_copy(EC_RAW_POINT *dest, const EC_RAW_POINT *src) {
161
+ void ec_GFp_simple_point_copy(EC_JACOBIAN *dest, const EC_JACOBIAN *src) {
162
162
  OPENSSL_memcpy(&dest->X, &src->X, sizeof(EC_FELEM));
163
163
  OPENSSL_memcpy(&dest->Y, &src->Y, sizeof(EC_FELEM));
164
164
  OPENSSL_memcpy(&dest->Z, &src->Z, sizeof(EC_FELEM));
165
165
  }
166
166
 
167
167
  void ec_GFp_simple_point_set_to_infinity(const EC_GROUP *group,
168
- EC_RAW_POINT *point) {
168
+ EC_JACOBIAN *point) {
169
169
  // Although it is strictly only necessary to zero Z, we zero the entire point
170
170
  // in case |point| was stack-allocated and yet to be initialized.
171
171
  ec_GFp_simple_point_init(point);
172
172
  }
173
173
 
174
- void ec_GFp_simple_invert(const EC_GROUP *group, EC_RAW_POINT *point) {
174
+ void ec_GFp_simple_invert(const EC_GROUP *group, EC_JACOBIAN *point) {
175
175
  ec_felem_neg(group, &point->Y, &point->Y);
176
176
  }
177
177
 
178
178
  int ec_GFp_simple_is_at_infinity(const EC_GROUP *group,
179
- const EC_RAW_POINT *point) {
179
+ const EC_JACOBIAN *point) {
180
180
  return ec_felem_non_zero_mask(group, &point->Z) == 0;
181
181
  }
182
182
 
183
183
  int ec_GFp_simple_is_on_curve(const EC_GROUP *group,
184
- const EC_RAW_POINT *point) {
184
+ const EC_JACOBIAN *point) {
185
185
  // We have a curve defined by a Weierstrass equation
186
186
  // y^2 = x^3 + a*x + b.
187
187
  // The point to consider is given in Jacobian projective coordinates
@@ -237,8 +237,8 @@ int ec_GFp_simple_is_on_curve(const EC_GROUP *group,
237
237
  return 1 & ~(not_infinity & not_equal);
238
238
  }
239
239
 
240
- int ec_GFp_simple_points_equal(const EC_GROUP *group, const EC_RAW_POINT *a,
241
- const EC_RAW_POINT *b) {
240
+ int ec_GFp_simple_points_equal(const EC_GROUP *group, const EC_JACOBIAN *a,
241
+ const EC_JACOBIAN *b) {
242
242
  // This function is implemented in constant-time for two reasons. First,
243
243
  // although EC points are usually public, their Jacobian Z coordinates may be
244
244
  // secret, or at least are not obviously public. Second, more complex
@@ -285,7 +285,7 @@ int ec_GFp_simple_points_equal(const EC_GROUP *group, const EC_RAW_POINT *a,
285
285
  }
286
286
 
287
287
  int ec_affine_jacobian_equal(const EC_GROUP *group, const EC_AFFINE *a,
288
- const EC_RAW_POINT *b) {
288
+ const EC_JACOBIAN *b) {
289
289
  // If |b| is not infinity, we have to decide whether
290
290
  // (X_a, Y_a) = (X_b/Z_b^2, Y_b/Z_b^3),
291
291
  // or equivalently, whether
@@ -314,7 +314,7 @@ int ec_affine_jacobian_equal(const EC_GROUP *group, const EC_AFFINE *a,
314
314
  return equal & 1;
315
315
  }
316
316
 
317
- int ec_GFp_simple_cmp_x_coordinate(const EC_GROUP *group, const EC_RAW_POINT *p,
317
+ int ec_GFp_simple_cmp_x_coordinate(const EC_GROUP *group, const EC_JACOBIAN *p,
318
318
  const EC_SCALAR *r) {
319
319
  if (ec_GFp_simple_is_at_infinity(group, p)) {
320
320
  // |ec_get_x_coordinate_as_scalar| will check this internally, but this way
@@ -21,14 +21,14 @@
21
21
  #include "../../internal.h"
22
22
 
23
23
 
24
- void ec_GFp_mont_mul(const EC_GROUP *group, EC_RAW_POINT *r,
25
- const EC_RAW_POINT *p, const EC_SCALAR *scalar) {
24
+ void ec_GFp_mont_mul(const EC_GROUP *group, EC_JACOBIAN *r,
25
+ const EC_JACOBIAN *p, const EC_SCALAR *scalar) {
26
26
  // This is a generic implementation for uncommon curves that not do not
27
27
  // warrant a tuned one. It uses unsigned digits so that the doubling case in
28
28
  // |ec_GFp_mont_add| is always unreachable, erring on safety and simplicity.
29
29
 
30
30
  // Compute a table of the first 32 multiples of |p| (including infinity).
31
- EC_RAW_POINT precomp[32];
31
+ EC_JACOBIAN precomp[32];
32
32
  ec_GFp_simple_point_set_to_infinity(group, &precomp[0]);
33
33
  ec_GFp_simple_point_copy(&precomp[1], p);
34
34
  for (size_t j = 2; j < OPENSSL_ARRAY_SIZE(precomp); j++) {
@@ -56,8 +56,8 @@ void ec_GFp_mont_mul(const EC_GROUP *group, EC_RAW_POINT *r,
56
56
  window |= bn_is_bit_set_words(scalar->words, width, i);
57
57
 
58
58
  // Select the entry in constant-time.
59
- EC_RAW_POINT tmp;
60
- OPENSSL_memset(&tmp, 0, sizeof(EC_RAW_POINT));
59
+ EC_JACOBIAN tmp;
60
+ OPENSSL_memset(&tmp, 0, sizeof(EC_JACOBIAN));
61
61
  for (size_t j = 0; j < OPENSSL_ARRAY_SIZE(precomp); j++) {
62
62
  BN_ULONG mask = constant_time_eq_w(j, window);
63
63
  ec_point_select(group, &tmp, mask, &precomp[j], &tmp);
@@ -76,13 +76,13 @@ void ec_GFp_mont_mul(const EC_GROUP *group, EC_RAW_POINT *r,
76
76
  }
77
77
  }
78
78
 
79
- void ec_GFp_mont_mul_base(const EC_GROUP *group, EC_RAW_POINT *r,
79
+ void ec_GFp_mont_mul_base(const EC_GROUP *group, EC_JACOBIAN *r,
80
80
  const EC_SCALAR *scalar) {
81
81
  ec_GFp_mont_mul(group, r, &group->generator->raw, scalar);
82
82
  }
83
83
 
84
- static void ec_GFp_mont_batch_precomp(const EC_GROUP *group, EC_RAW_POINT *out,
85
- size_t num, const EC_RAW_POINT *p) {
84
+ static void ec_GFp_mont_batch_precomp(const EC_GROUP *group, EC_JACOBIAN *out,
85
+ size_t num, const EC_JACOBIAN *p) {
86
86
  assert(num > 1);
87
87
  ec_GFp_simple_point_set_to_infinity(group, &out[0]);
88
88
  ec_GFp_simple_point_copy(&out[1], p);
@@ -96,8 +96,8 @@ static void ec_GFp_mont_batch_precomp(const EC_GROUP *group, EC_RAW_POINT *out,
96
96
  }
97
97
 
98
98
  static void ec_GFp_mont_batch_get_window(const EC_GROUP *group,
99
- EC_RAW_POINT *out,
100
- const EC_RAW_POINT precomp[17],
99
+ EC_JACOBIAN *out,
100
+ const EC_JACOBIAN precomp[17],
101
101
  const EC_SCALAR *scalar, unsigned i) {
102
102
  const size_t width = group->order.width;
103
103
  uint8_t window = bn_is_bit_set_words(scalar->words, width, i + 4) << 5;
@@ -112,7 +112,7 @@ static void ec_GFp_mont_batch_get_window(const EC_GROUP *group,
112
112
  ec_GFp_nistp_recode_scalar_bits(&sign, &digit, window);
113
113
 
114
114
  // Select the entry in constant-time.
115
- OPENSSL_memset(out, 0, sizeof(EC_RAW_POINT));
115
+ OPENSSL_memset(out, 0, sizeof(EC_JACOBIAN));
116
116
  for (size_t j = 0; j < 17; j++) {
117
117
  BN_ULONG mask = constant_time_eq_w(j, digit);
118
118
  ec_point_select(group, out, mask, &precomp[j], out);
@@ -126,11 +126,11 @@ static void ec_GFp_mont_batch_get_window(const EC_GROUP *group,
126
126
  ec_felem_select(group, &out->Y, sign_mask, &neg_Y, &out->Y);
127
127
  }
128
128
 
129
- void ec_GFp_mont_mul_batch(const EC_GROUP *group, EC_RAW_POINT *r,
130
- const EC_RAW_POINT *p0, const EC_SCALAR *scalar0,
131
- const EC_RAW_POINT *p1, const EC_SCALAR *scalar1,
132
- const EC_RAW_POINT *p2, const EC_SCALAR *scalar2) {
133
- EC_RAW_POINT precomp[3][17];
129
+ void ec_GFp_mont_mul_batch(const EC_GROUP *group, EC_JACOBIAN *r,
130
+ const EC_JACOBIAN *p0, const EC_SCALAR *scalar0,
131
+ const EC_JACOBIAN *p1, const EC_SCALAR *scalar1,
132
+ const EC_JACOBIAN *p2, const EC_SCALAR *scalar2) {
133
+ EC_JACOBIAN precomp[3][17];
134
134
  ec_GFp_mont_batch_precomp(group, precomp[0], 17, p0);
135
135
  ec_GFp_mont_batch_precomp(group, precomp[1], 17, p1);
136
136
  if (p2 != NULL) {
@@ -145,7 +145,7 @@ void ec_GFp_mont_mul_batch(const EC_GROUP *group, EC_RAW_POINT *r,
145
145
  ec_GFp_mont_dbl(group, r, r);
146
146
  }
147
147
  if (i % 5 == 0) {
148
- EC_RAW_POINT tmp;
148
+ EC_JACOBIAN tmp;
149
149
  ec_GFp_mont_batch_get_window(group, &tmp, precomp[0], scalar0, i);
150
150
  if (r_is_at_infinity) {
151
151
  ec_GFp_simple_point_copy(r, &tmp);
@@ -174,13 +174,13 @@ static unsigned ec_GFp_mont_comb_stride(const EC_GROUP *group) {
174
174
  }
175
175
 
176
176
  int ec_GFp_mont_init_precomp(const EC_GROUP *group, EC_PRECOMP *out,
177
- const EC_RAW_POINT *p) {
177
+ const EC_JACOBIAN *p) {
178
178
  // comb[i - 1] stores the ith element of the comb. That is, if i is
179
179
  // b4 * 2^4 + b3 * 2^3 + ... + b0 * 2^0, it stores k * |p|, where k is
180
180
  // b4 * 2^(4*stride) + b3 * 2^(3*stride) + ... + b0 * 2^(0*stride). stride
181
181
  // here is |ec_GFp_mont_comb_stride|. We store at index i - 1 because the 0th
182
182
  // comb entry is always infinity.
183
- EC_RAW_POINT comb[(1 << EC_MONT_PRECOMP_COMB_SIZE) - 1];
183
+ EC_JACOBIAN comb[(1 << EC_MONT_PRECOMP_COMB_SIZE) - 1];
184
184
  unsigned stride = ec_GFp_mont_comb_stride(group);
185
185
 
186
186
  // We compute the comb sequentially by the highest set bit. Initially, all
@@ -209,7 +209,7 @@ int ec_GFp_mont_init_precomp(const EC_GROUP *group, EC_PRECOMP *out,
209
209
  }
210
210
 
211
211
  static void ec_GFp_mont_get_comb_window(const EC_GROUP *group,
212
- EC_RAW_POINT *out,
212
+ EC_JACOBIAN *out,
213
213
  const EC_PRECOMP *precomp,
214
214
  const EC_SCALAR *scalar, unsigned i) {
215
215
  const size_t width = group->order.width;
@@ -223,7 +223,7 @@ static void ec_GFp_mont_get_comb_window(const EC_GROUP *group,
223
223
 
224
224
  // Select precomp->comb[window - 1]. If |window| is zero, |match| will always
225
225
  // be zero, which will leave |out| at infinity.
226
- OPENSSL_memset(out, 0, sizeof(EC_RAW_POINT));
226
+ OPENSSL_memset(out, 0, sizeof(EC_JACOBIAN));
227
227
  for (unsigned j = 0; j < OPENSSL_ARRAY_SIZE(precomp->comb); j++) {
228
228
  BN_ULONG match = constant_time_eq_w(window, j + 1);
229
229
  ec_felem_select(group, &out->X, match, &precomp->comb[j].X, &out->X);
@@ -233,7 +233,7 @@ static void ec_GFp_mont_get_comb_window(const EC_GROUP *group,
233
233
  ec_felem_select(group, &out->Z, is_infinity, &out->Z, &group->one);
234
234
  }
235
235
 
236
- void ec_GFp_mont_mul_precomp(const EC_GROUP *group, EC_RAW_POINT *r,
236
+ void ec_GFp_mont_mul_precomp(const EC_GROUP *group, EC_JACOBIAN *r,
237
237
  const EC_PRECOMP *p0, const EC_SCALAR *scalar0,
238
238
  const EC_PRECOMP *p1, const EC_SCALAR *scalar1,
239
239
  const EC_PRECOMP *p2, const EC_SCALAR *scalar2) {
@@ -244,7 +244,7 @@ void ec_GFp_mont_mul_precomp(const EC_GROUP *group, EC_RAW_POINT *r,
244
244
  ec_GFp_mont_dbl(group, r, r);
245
245
  }
246
246
 
247
- EC_RAW_POINT tmp;
247
+ EC_JACOBIAN tmp;
248
248
  ec_GFp_mont_get_comb_window(group, &tmp, p0, scalar0, i);
249
249
  if (r_is_at_infinity) {
250
250
  ec_GFp_simple_point_copy(r, &tmp);
@@ -148,18 +148,18 @@ void ec_compute_wNAF(const EC_GROUP *group, int8_t *out,
148
148
  }
149
149
 
150
150
  // compute_precomp sets |out[i]| to (2*i+1)*p, for i from 0 to |len|.
151
- static void compute_precomp(const EC_GROUP *group, EC_RAW_POINT *out,
152
- const EC_RAW_POINT *p, size_t len) {
151
+ static void compute_precomp(const EC_GROUP *group, EC_JACOBIAN *out,
152
+ const EC_JACOBIAN *p, size_t len) {
153
153
  ec_GFp_simple_point_copy(&out[0], p);
154
- EC_RAW_POINT two_p;
154
+ EC_JACOBIAN two_p;
155
155
  ec_GFp_mont_dbl(group, &two_p, p);
156
156
  for (size_t i = 1; i < len; i++) {
157
157
  ec_GFp_mont_add(group, &out[i], &out[i - 1], &two_p);
158
158
  }
159
159
  }
160
160
 
161
- static void lookup_precomp(const EC_GROUP *group, EC_RAW_POINT *out,
162
- const EC_RAW_POINT *precomp, int digit) {
161
+ static void lookup_precomp(const EC_GROUP *group, EC_JACOBIAN *out,
162
+ const EC_JACOBIAN *precomp, int digit) {
163
163
  if (digit < 0) {
164
164
  digit = -digit;
165
165
  ec_GFp_simple_point_copy(out, &precomp[digit >> 1]);
@@ -179,9 +179,9 @@ static void lookup_precomp(const EC_GROUP *group, EC_RAW_POINT *out,
179
179
  // avoid a malloc.
180
180
  #define EC_WNAF_STACK 3
181
181
 
182
- int ec_GFp_mont_mul_public_batch(const EC_GROUP *group, EC_RAW_POINT *r,
182
+ int ec_GFp_mont_mul_public_batch(const EC_GROUP *group, EC_JACOBIAN *r,
183
183
  const EC_SCALAR *g_scalar,
184
- const EC_RAW_POINT *points,
184
+ const EC_JACOBIAN *points,
185
185
  const EC_SCALAR *scalars, size_t num) {
186
186
  size_t bits = BN_num_bits(&group->order);
187
187
  size_t wNAF_len = bits + 1;
@@ -190,9 +190,9 @@ int ec_GFp_mont_mul_public_batch(const EC_GROUP *group, EC_RAW_POINT *r,
190
190
  int8_t wNAF_stack[EC_WNAF_STACK][EC_MAX_BYTES * 8 + 1];
191
191
  int8_t (*wNAF_alloc)[EC_MAX_BYTES * 8 + 1] = NULL;
192
192
  int8_t (*wNAF)[EC_MAX_BYTES * 8 + 1];
193
- EC_RAW_POINT precomp_stack[EC_WNAF_STACK][EC_WNAF_TABLE_SIZE];
194
- EC_RAW_POINT (*precomp_alloc)[EC_WNAF_TABLE_SIZE] = NULL;
195
- EC_RAW_POINT (*precomp)[EC_WNAF_TABLE_SIZE];
193
+ EC_JACOBIAN precomp_stack[EC_WNAF_STACK][EC_WNAF_TABLE_SIZE];
194
+ EC_JACOBIAN (*precomp_alloc)[EC_WNAF_TABLE_SIZE] = NULL;
195
+ EC_JACOBIAN (*precomp)[EC_WNAF_TABLE_SIZE];
196
196
  if (num <= EC_WNAF_STACK) {
197
197
  wNAF = wNAF_stack;
198
198
  precomp = precomp_stack;
@@ -212,9 +212,9 @@ int ec_GFp_mont_mul_public_batch(const EC_GROUP *group, EC_RAW_POINT *r,
212
212
  }
213
213
 
214
214
  int8_t g_wNAF[EC_MAX_BYTES * 8 + 1];
215
- EC_RAW_POINT g_precomp[EC_WNAF_TABLE_SIZE];
215
+ EC_JACOBIAN g_precomp[EC_WNAF_TABLE_SIZE];
216
216
  assert(wNAF_len <= OPENSSL_ARRAY_SIZE(g_wNAF));
217
- const EC_RAW_POINT *g = &group->generator->raw;
217
+ const EC_JACOBIAN *g = &group->generator->raw;
218
218
  if (g_scalar != NULL) {
219
219
  ec_compute_wNAF(group, g_wNAF, g_scalar, bits, EC_WNAF_WINDOW_BITS);
220
220
  compute_precomp(group, g_precomp, g, EC_WNAF_TABLE_SIZE);
@@ -226,7 +226,7 @@ int ec_GFp_mont_mul_public_batch(const EC_GROUP *group, EC_RAW_POINT *r,
226
226
  compute_precomp(group, precomp[i], &points[i], EC_WNAF_TABLE_SIZE);
227
227
  }
228
228
 
229
- EC_RAW_POINT tmp;
229
+ EC_JACOBIAN tmp;
230
230
  int r_is_at_infinity = 1;
231
231
  for (size_t k = wNAF_len - 1; k < wNAF_len; k--) {
232
232
  if (!r_is_at_infinity) {
@@ -94,7 +94,7 @@ int ECDH_compute_key_fips(uint8_t *out, size_t out_len, const EC_POINT *pub_key,
94
94
  return 0;
95
95
  }
96
96
 
97
- EC_RAW_POINT shared_point;
97
+ EC_JACOBIAN shared_point;
98
98
  uint8_t buf[EC_MAX_BYTES];
99
99
  size_t buflen;
100
100
  if (!ec_point_mul_scalar(group, &shared_point, &pub_key->raw, priv) ||
@@ -181,7 +181,7 @@ int ecdsa_do_verify_no_self_test(const uint8_t *digest, size_t digest_len,
181
181
  ec_scalar_mul_montgomery(group, &u1, &m, &s_inv_mont);
182
182
  ec_scalar_mul_montgomery(group, &u2, &r, &s_inv_mont);
183
183
 
184
- EC_RAW_POINT point;
184
+ EC_JACOBIAN point;
185
185
  if (!ec_point_mul_scalar_public(group, &point, &u1, &pub_key->raw, &u2)) {
186
186
  OPENSSL_PUT_ERROR(ECDSA, ERR_R_EC_LIB);
187
187
  return 0;
@@ -216,7 +216,7 @@ static ECDSA_SIG *ecdsa_sign_impl(const EC_GROUP *group, int *out_retry,
216
216
  }
217
217
 
218
218
  // Compute r, the x-coordinate of k * generator.
219
- EC_RAW_POINT tmp_point;
219
+ EC_JACOBIAN tmp_point;
220
220
  EC_SCALAR r;
221
221
  if (!ec_point_mul_scalar_base(group, &tmp_point, k) ||
222
222
  !ec_get_x_coordinate_as_scalar(group, &r, &tmp_point)) {
@@ -20,7 +20,7 @@
20
20
  #include <openssl/err.h>
21
21
  #include <openssl/hmac.h>
22
22
 
23
- #include "../internal.h"
23
+ #include "../../internal.h"
24
24
 
25
25
 
26
26
  int HKDF(uint8_t *out_key, size_t out_len, const EVP_MD *digest,
@@ -66,10 +66,7 @@ void CRYPTO_cbc128_encrypt(const uint8_t *in, uint8_t *out, size_t len,
66
66
  size_t n;
67
67
  const uint8_t *iv = ivec;
68
68
  while (len >= 16) {
69
- for (n = 0; n < 16; n += sizeof(crypto_word_t)) {
70
- CRYPTO_store_word_le(
71
- out + n, CRYPTO_load_word_le(in + n) ^ CRYPTO_load_word_le(iv + n));
72
- }
69
+ CRYPTO_xor16(out, in, iv);
73
70
  (*block)(out, out, key);
74
71
  iv = out;
75
72
  len -= 16;
@@ -118,15 +115,10 @@ void CRYPTO_cbc128_decrypt(const uint8_t *in, uint8_t *out, size_t len,
118
115
  if ((inptr >= 32 && outptr <= inptr - 32) || inptr < outptr) {
119
116
  // If |out| is at least two blocks behind |in| or completely disjoint, there
120
117
  // is no need to decrypt to a temporary block.
121
- static_assert(16 % sizeof(crypto_word_t) == 0,
122
- "block cannot be evenly divided into words");
123
118
  const uint8_t *iv = ivec;
124
119
  while (len >= 16) {
125
120
  (*block)(in, out, key);
126
- for (n = 0; n < 16; n += sizeof(crypto_word_t)) {
127
- CRYPTO_store_word_le(out + n, CRYPTO_load_word_le(out + n) ^
128
- CRYPTO_load_word_le(iv + n));
129
- }
121
+ CRYPTO_xor16(out, out, iv);
130
122
  iv = in;
131
123
  len -= 16;
132
124
  in += 16;
@@ -101,10 +101,7 @@ void CRYPTO_ctr128_encrypt(const uint8_t *in, uint8_t *out, size_t len,
101
101
  while (len >= 16) {
102
102
  (*block)(ivec, ecount_buf, key);
103
103
  ctr128_inc(ivec);
104
- for (n = 0; n < 16; n += sizeof(crypto_word_t)) {
105
- CRYPTO_store_word_le(out + n, CRYPTO_load_word_le(in + n) ^
106
- CRYPTO_load_word_le(ecount_buf + n));
107
- }
104
+ CRYPTO_xor16(out, in, ecount_buf);
108
105
  len -= 16;
109
106
  out += 16;
110
107
  in += 16;