grpc 1.55.3 → 1.56.0.pre3

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 (385) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +100 -70
  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 +82 -98
  11. data/src/core/ext/filters/client_channel/client_channel.h +4 -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/hpack_parser.cc +543 -567
  56. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +9 -150
  57. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +32 -46
  58. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +5 -18
  59. data/src/core/ext/transport/chttp2/transport/internal.h +1 -15
  60. data/src/core/ext/transport/chttp2/transport/parsing.cc +12 -12
  61. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +11 -2
  62. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -0
  63. data/src/core/ext/xds/certificate_provider_store.cc +4 -9
  64. data/src/core/ext/xds/certificate_provider_store.h +1 -1
  65. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
  66. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
  67. data/src/core/ext/xds/xds_api.cc +9 -6
  68. data/src/core/ext/xds/xds_api.h +3 -2
  69. data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
  70. data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
  71. data/src/core/ext/xds/xds_bootstrap_grpc.cc +21 -9
  72. data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -0
  73. data/src/core/ext/xds/xds_client.cc +5 -4
  74. data/src/core/ext/xds/xds_client_stats.h +1 -1
  75. data/src/core/ext/xds/xds_cluster.cc +20 -19
  76. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +11 -8
  77. data/src/core/ext/xds/xds_common_types.cc +3 -1
  78. data/src/core/ext/xds/xds_http_fault_filter.cc +16 -13
  79. data/src/core/ext/xds/xds_http_fault_filter.h +2 -1
  80. data/src/core/ext/xds/xds_http_filters.h +4 -2
  81. data/src/core/ext/xds/xds_http_rbac_filter.cc +154 -67
  82. data/src/core/ext/xds/xds_http_rbac_filter.h +2 -1
  83. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +15 -11
  84. data/src/core/ext/xds/xds_http_stateful_session_filter.h +2 -1
  85. data/src/core/ext/xds/xds_lb_policy_registry.cc +22 -16
  86. data/src/core/ext/xds/xds_listener.cc +1 -0
  87. data/src/core/ext/xds/xds_route_config.cc +40 -3
  88. data/src/core/ext/xds/xds_routing.cc +2 -2
  89. data/src/core/ext/xds/xds_transport_grpc.cc +3 -1
  90. data/src/core/lib/avl/avl.h +5 -0
  91. data/src/core/lib/backoff/random_early_detection.h +0 -5
  92. data/src/core/lib/channel/channel_args.cc +80 -22
  93. data/src/core/lib/channel/channel_args.h +34 -1
  94. data/src/core/lib/channel/channel_trace.cc +16 -12
  95. data/src/core/lib/channel/channelz.cc +159 -132
  96. data/src/core/lib/channel/channelz.h +42 -35
  97. data/src/core/lib/channel/channelz_registry.cc +23 -20
  98. data/src/core/lib/channel/connected_channel.cc +17 -6
  99. data/src/core/lib/channel/promise_based_filter.cc +0 -4
  100. data/src/core/lib/channel/promise_based_filter.h +2 -0
  101. data/src/core/lib/compression/compression_internal.cc +2 -5
  102. data/src/core/lib/config/config_vars.cc +20 -18
  103. data/src/core/lib/config/config_vars.h +4 -4
  104. data/src/core/lib/config/load_config.cc +13 -0
  105. data/src/core/lib/config/load_config.h +6 -0
  106. data/src/core/lib/debug/event_log.h +1 -1
  107. data/src/core/lib/debug/stats_data.h +1 -1
  108. data/src/core/lib/debug/trace.cc +24 -55
  109. data/src/core/lib/debug/trace.h +3 -1
  110. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
  111. data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
  112. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
  113. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
  114. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
  115. data/src/core/lib/event_engine/default_event_engine.cc +13 -1
  116. data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
  117. data/src/core/lib/event_engine/poller.h +2 -2
  118. data/src/core/lib/event_engine/posix.h +4 -0
  119. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
  120. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
  121. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -0
  122. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +3 -2
  123. data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -2
  124. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -33
  125. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -11
  126. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
  127. data/src/core/lib/event_engine/shim.cc +7 -1
  128. data/src/core/lib/event_engine/{thread_pool.cc → thread_pool/original_thread_pool.cc} +28 -25
  129. data/src/core/lib/event_engine/{thread_pool.h → thread_pool/original_thread_pool.h} +11 -15
  130. data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
  131. data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +17 -15
  132. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
  133. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
  134. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
  135. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
  136. data/src/core/lib/event_engine/windows/iocp.cc +4 -3
  137. data/src/core/lib/event_engine/windows/iocp.h +3 -3
  138. data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
  139. data/src/core/lib/event_engine/windows/win_socket.h +4 -4
  140. data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -10
  141. data/src/core/lib/event_engine/windows/windows_endpoint.h +3 -2
  142. data/src/core/lib/event_engine/windows/windows_engine.cc +19 -17
  143. data/src/core/lib/event_engine/windows/windows_engine.h +6 -6
  144. data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
  145. data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
  146. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
  147. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
  148. data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
  149. data/src/core/lib/experiments/config.cc +38 -7
  150. data/src/core/lib/experiments/config.h +16 -0
  151. data/src/core/lib/experiments/experiments.cc +67 -20
  152. data/src/core/lib/experiments/experiments.h +27 -21
  153. data/src/core/lib/gpr/log_internal.h +55 -0
  154. data/src/core/lib/gprpp/crash.cc +10 -0
  155. data/src/core/lib/gprpp/crash.h +3 -0
  156. data/src/core/lib/gprpp/per_cpu.cc +33 -0
  157. data/src/core/lib/gprpp/per_cpu.h +29 -6
  158. data/src/core/lib/gprpp/time.cc +1 -0
  159. data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
  160. data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
  161. data/src/core/lib/iomgr/ev_apple.cc +12 -12
  162. data/src/core/lib/iomgr/ev_epoll1_linux.cc +10 -3
  163. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +15 -1
  164. data/src/core/lib/iomgr/iocp_windows.cc +24 -3
  165. data/src/core/lib/iomgr/iocp_windows.h +11 -0
  166. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
  167. data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -2
  168. data/src/core/lib/iomgr/socket_windows.cc +61 -7
  169. data/src/core/lib/iomgr/socket_windows.h +9 -2
  170. data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
  171. data/src/core/lib/iomgr/tcp_server_posix.cc +156 -140
  172. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -13
  173. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +0 -21
  174. data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
  175. data/src/core/lib/json/json.h +2 -166
  176. data/src/core/lib/json/json_object_loader.cc +8 -9
  177. data/src/core/lib/json/json_object_loader.h +25 -18
  178. data/src/core/lib/json/json_reader.cc +13 -6
  179. data/src/core/lib/json/json_util.cc +6 -11
  180. data/src/core/lib/json/json_writer.cc +7 -8
  181. data/src/core/lib/load_balancing/lb_policy.h +13 -0
  182. data/src/core/lib/load_balancing/lb_policy_registry.cc +2 -1
  183. data/src/core/lib/matchers/matchers.cc +3 -4
  184. data/src/core/lib/matchers/matchers.h +2 -1
  185. data/src/core/lib/promise/activity.cc +5 -0
  186. data/src/core/lib/promise/activity.h +10 -0
  187. data/src/core/lib/promise/detail/promise_factory.h +1 -1
  188. data/src/core/lib/promise/party.cc +31 -13
  189. data/src/core/lib/promise/party.h +11 -2
  190. data/src/core/lib/promise/pipe.h +9 -2
  191. data/src/core/lib/promise/prioritized_race.h +95 -0
  192. data/src/core/lib/promise/sleep.cc +2 -1
  193. data/src/core/lib/resolver/server_address.cc +0 -8
  194. data/src/core/lib/resolver/server_address.h +0 -6
  195. data/src/core/lib/resource_quota/memory_quota.cc +7 -7
  196. data/src/core/lib/resource_quota/memory_quota.h +1 -2
  197. data/src/core/lib/security/authorization/audit_logging.cc +98 -0
  198. data/src/core/lib/security/authorization/audit_logging.h +73 -0
  199. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
  200. data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
  201. data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
  202. data/src/core/lib/security/authorization/rbac_policy.h +19 -2
  203. data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
  204. data/src/core/lib/security/authorization/stdout_logger.h +61 -0
  205. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
  206. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
  207. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
  208. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +19 -12
  209. data/src/core/lib/security/credentials/external/external_account_credentials.cc +4 -2
  210. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -0
  211. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
  212. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
  213. data/src/core/lib/security/credentials/jwt/json_token.cc +15 -14
  214. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -2
  215. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +1 -0
  216. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -0
  217. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -5
  218. data/src/core/lib/security/util/json_util.cc +1 -0
  219. data/src/core/lib/service_config/service_config_call_data.h +49 -20
  220. data/src/core/lib/service_config/service_config_impl.cc +2 -1
  221. data/src/core/lib/surface/call.cc +38 -23
  222. data/src/core/lib/surface/completion_queue.cc +6 -2
  223. data/src/core/lib/surface/validate_metadata.cc +22 -37
  224. data/src/core/lib/surface/validate_metadata.h +3 -13
  225. data/src/core/lib/surface/version.cc +2 -2
  226. data/src/core/lib/transport/batch_builder.cc +15 -12
  227. data/src/core/lib/transport/batch_builder.h +39 -35
  228. data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
  229. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
  230. data/src/ruby/ext/grpc/extconf.rb +8 -9
  231. data/src/ruby/lib/grpc/version.rb +1 -1
  232. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
  233. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +1 -1
  234. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
  235. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
  236. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
  237. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +6 -4
  238. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -1
  239. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +5 -9
  240. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
  241. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
  242. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
  243. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
  244. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
  245. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
  246. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_openbsd.c +31 -0
  247. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +6 -4
  248. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
  249. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
  250. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
  251. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +18 -6
  252. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +15 -7
  253. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
  254. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
  255. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  256. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +3 -0
  257. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +24 -24
  258. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +1 -1
  259. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +7 -7
  260. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +74 -74
  261. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +1 -2
  262. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +11 -11
  263. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +12 -12
  264. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +14 -15
  265. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
  266. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +10 -10
  267. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +23 -23
  268. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -13
  269. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
  270. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +2 -2
  271. data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
  272. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
  273. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
  274. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
  275. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
  276. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
  277. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
  278. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
  279. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -23
  280. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +21 -16
  281. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
  282. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
  283. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +95 -183
  284. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +71 -0
  285. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
  286. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
  287. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +162 -6
  288. data/third_party/boringssl-with-bazel/src/crypto/internal.h +18 -0
  289. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +18 -11
  290. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
  291. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
  292. data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +3 -13
  293. data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
  294. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
  295. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
  296. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
  297. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +218 -44
  298. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
  299. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -39
  300. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
  301. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
  302. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
  303. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
  304. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -140
  305. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
  306. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -14
  307. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
  308. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
  309. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
  310. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
  311. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
  312. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
  313. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +14 -46
  314. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
  315. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
  316. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1 -1
  317. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
  318. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -4
  319. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +32 -1
  320. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +0 -4
  321. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
  322. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +3 -3
  323. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +28 -0
  324. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
  325. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
  326. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -1
  327. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +5 -0
  328. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +149 -20
  329. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +4 -0
  330. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
  331. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
  332. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +774 -615
  333. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +42 -10
  334. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
  335. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +2 -4
  336. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +24 -16
  337. data/third_party/boringssl-with-bazel/src/ssl/internal.h +65 -18
  338. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
  339. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +187 -193
  340. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +13 -129
  341. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +85 -10
  342. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
  343. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
  344. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
  345. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
  346. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
  347. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
  348. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
  349. data/third_party/cares/cares/include/ares.h +23 -1
  350. data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
  351. data/third_party/cares/cares/include/ares_rules.h +2 -2
  352. data/third_party/cares/cares/include/ares_version.h +3 -3
  353. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
  354. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
  355. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
  356. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
  357. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
  358. data/third_party/cares/cares/src/lib/ares_data.c +16 -0
  359. data/third_party/cares/cares/src/lib/ares_data.h +7 -0
  360. data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
  361. data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
  362. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
  363. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
  364. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
  365. data/third_party/cares/cares/src/lib/ares_init.c +97 -485
  366. data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
  367. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
  368. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
  369. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
  370. data/third_party/cares/cares/src/lib/ares_private.h +30 -16
  371. data/third_party/cares/cares/src/lib/ares_process.c +55 -16
  372. data/third_party/cares/cares/src/lib/ares_query.c +1 -35
  373. data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
  374. data/third_party/cares/cares/src/lib/ares_send.c +5 -7
  375. data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
  376. data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
  377. data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
  378. data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
  379. data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
  380. metadata +50 -16
  381. data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
  382. data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
  383. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +0 -176
  384. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +0 -325
  385. data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -30,9 +30,9 @@
30
30
  #include "internal.h"
31
31
 
32
32
 
33
- typedef int (*hash_t_func_t)(const EC_GROUP *group, EC_RAW_POINT *out,
33
+ typedef int (*hash_t_func_t)(const EC_GROUP *group, EC_JACOBIAN *out,
34
34
  const uint8_t t[TRUST_TOKEN_NONCE_SIZE]);
35
- typedef int (*hash_s_func_t)(const EC_GROUP *group, EC_RAW_POINT *out,
35
+ typedef int (*hash_s_func_t)(const EC_GROUP *group, EC_JACOBIAN *out,
36
36
  const EC_AFFINE *t,
37
37
  const uint8_t s[TRUST_TOKEN_NONCE_SIZE]);
38
38
  typedef int (*hash_c_func_t)(const EC_GROUP *group, EC_SCALAR *out,
@@ -44,7 +44,7 @@ typedef struct {
44
44
  const EC_GROUP *group;
45
45
  EC_PRECOMP g_precomp;
46
46
  EC_PRECOMP h_precomp;
47
- EC_RAW_POINT h;
47
+ EC_JACOBIAN h;
48
48
  // hash_t implements the H_t operation in PMBTokens. It returns one on success
49
49
  // and zero on error.
50
50
  hash_t_func_t hash_t;
@@ -173,11 +173,11 @@ static int cbs_get_prefixed_point(CBS *cbs, const EC_GROUP *group,
173
173
  return 1;
174
174
  }
175
175
 
176
- static int mul_public_3(const EC_GROUP *group, EC_RAW_POINT *out,
177
- const EC_RAW_POINT *p0, const EC_SCALAR *scalar0,
178
- const EC_RAW_POINT *p1, const EC_SCALAR *scalar1,
179
- const EC_RAW_POINT *p2, const EC_SCALAR *scalar2) {
180
- EC_RAW_POINT points[3] = {*p0, *p1, *p2};
176
+ static int mul_public_3(const EC_GROUP *group, EC_JACOBIAN *out,
177
+ const EC_JACOBIAN *p0, const EC_SCALAR *scalar0,
178
+ const EC_JACOBIAN *p1, const EC_SCALAR *scalar1,
179
+ const EC_JACOBIAN *p2, const EC_SCALAR *scalar2) {
180
+ EC_JACOBIAN points[3] = {*p0, *p1, *p2};
181
181
  EC_SCALAR scalars[3] = {*scalar0, *scalar1, *scalar2};
182
182
  return ec_point_mul_scalar_public_batch(group, out, /*g_scalar=*/NULL, points,
183
183
  scalars, 3);
@@ -189,7 +189,7 @@ static int pmbtoken_compute_keys(const PMBTOKEN_METHOD *method,
189
189
  const EC_SCALAR *x1, const EC_SCALAR *y1,
190
190
  const EC_SCALAR *xs, const EC_SCALAR *ys) {
191
191
  const EC_GROUP *group = method->group;
192
- EC_RAW_POINT pub[3];
192
+ EC_JACOBIAN pub[3];
193
193
  if (!ec_point_mul_scalar_precomp(group, &pub[0], &method->g_precomp,
194
194
  x0, &method->h_precomp, y0, NULL, NULL) ||
195
195
  !ec_point_mul_scalar_precomp(group, &pub[1], &method->g_precomp,
@@ -303,7 +303,7 @@ static int pmbtoken_issuer_key_from_bytes(const PMBTOKEN_METHOD *method,
303
303
  }
304
304
 
305
305
  // Recompute the public key.
306
- EC_RAW_POINT pub[3];
306
+ EC_JACOBIAN pub[3];
307
307
  EC_AFFINE pub_affine[3];
308
308
  if (!ec_point_mul_scalar_precomp(group, &pub[0], &method->g_precomp, &key->x0,
309
309
  &method->h_precomp, &key->y0, NULL, NULL) ||
@@ -367,7 +367,7 @@ static STACK_OF(TRUST_TOKEN_PRETOKEN) *pmbtoken_blind(
367
367
  ec_scalar_from_montgomery(group, &pretoken->r, &pretoken->r);
368
368
  ec_scalar_from_montgomery(group, &rinv, &rinv);
369
369
 
370
- EC_RAW_POINT T, Tp;
370
+ EC_JACOBIAN T, Tp;
371
371
  if (!method->hash_t(group, &T, pretoken->t) ||
372
372
  !ec_point_mul_scalar(group, &Tp, &T, &rinv) ||
373
373
  !ec_jacobian_to_affine(group, &pretoken->Tp, &Tp)) {
@@ -516,8 +516,8 @@ err:
516
516
 
517
517
  static int dleq_generate(const PMBTOKEN_METHOD *method, CBB *cbb,
518
518
  const TRUST_TOKEN_ISSUER_KEY *priv,
519
- const EC_RAW_POINT *T, const EC_RAW_POINT *S,
520
- const EC_RAW_POINT *W, const EC_RAW_POINT *Ws,
519
+ const EC_JACOBIAN *T, const EC_JACOBIAN *S,
520
+ const EC_JACOBIAN *W, const EC_JACOBIAN *Ws,
521
521
  uint8_t private_metadata) {
522
522
  const EC_GROUP *group = method->group;
523
523
 
@@ -537,7 +537,7 @@ static int dleq_generate(const PMBTOKEN_METHOD *method, CBB *cbb,
537
537
  idx_Ko1,
538
538
  num_idx,
539
539
  };
540
- EC_RAW_POINT jacobians[num_idx];
540
+ EC_JACOBIAN jacobians[num_idx];
541
541
 
542
542
  // Setup the DLEQ proof.
543
543
  EC_SCALAR ks0, ks1;
@@ -675,11 +675,11 @@ static int dleq_generate(const PMBTOKEN_METHOD *method, CBB *cbb,
675
675
  }
676
676
 
677
677
  static int dleq_verify(const PMBTOKEN_METHOD *method, CBS *cbs,
678
- const TRUST_TOKEN_CLIENT_KEY *pub, const EC_RAW_POINT *T,
679
- const EC_RAW_POINT *S, const EC_RAW_POINT *W,
680
- const EC_RAW_POINT *Ws) {
678
+ const TRUST_TOKEN_CLIENT_KEY *pub, const EC_JACOBIAN *T,
679
+ const EC_JACOBIAN *S, const EC_JACOBIAN *W,
680
+ const EC_JACOBIAN *Ws) {
681
681
  const EC_GROUP *group = method->group;
682
- const EC_RAW_POINT *g = &group->generator->raw;
682
+ const EC_JACOBIAN *g = &group->generator->raw;
683
683
 
684
684
  // We verify a DLEQ proof for the validity token and a DLEQOR2 proof for the
685
685
  // private metadata token. To allow amortizing Jacobian-to-affine conversions,
@@ -699,7 +699,7 @@ static int dleq_verify(const PMBTOKEN_METHOD *method, CBS *cbs,
699
699
  idx_K11,
700
700
  num_idx,
701
701
  };
702
- EC_RAW_POINT jacobians[num_idx];
702
+ EC_JACOBIAN jacobians[num_idx];
703
703
 
704
704
  // Decode the DLEQ proof.
705
705
  EC_SCALAR cs, us, vs;
@@ -711,7 +711,7 @@ static int dleq_verify(const PMBTOKEN_METHOD *method, CBS *cbs,
711
711
  }
712
712
 
713
713
  // Ks = us*(G;T) + vs*(H;S) - cs*(pubs;Ws)
714
- EC_RAW_POINT pubs;
714
+ EC_JACOBIAN pubs;
715
715
  ec_affine_to_jacobian(group, &pubs, &pub->pubs);
716
716
  EC_SCALAR minus_cs;
717
717
  ec_scalar_neg(group, &minus_cs, &cs);
@@ -734,7 +734,7 @@ static int dleq_verify(const PMBTOKEN_METHOD *method, CBS *cbs,
734
734
  return 0;
735
735
  }
736
736
 
737
- EC_RAW_POINT pub0, pub1;
737
+ EC_JACOBIAN pub0, pub1;
738
738
  ec_affine_to_jacobian(group, &pub0, &pub->pub0);
739
739
  ec_affine_to_jacobian(group, &pub1, &pub->pub1);
740
740
  EC_SCALAR minus_c0, minus_c1;
@@ -803,17 +803,17 @@ static int pmbtoken_sign(const PMBTOKEN_METHOD *method,
803
803
  return 0;
804
804
  }
805
805
 
806
- if (num_to_issue > ((size_t)-1) / sizeof(EC_RAW_POINT) ||
806
+ if (num_to_issue > ((size_t)-1) / sizeof(EC_JACOBIAN) ||
807
807
  num_to_issue > ((size_t)-1) / sizeof(EC_SCALAR)) {
808
808
  OPENSSL_PUT_ERROR(TRUST_TOKEN, ERR_R_OVERFLOW);
809
809
  return 0;
810
810
  }
811
811
 
812
812
  int ret = 0;
813
- EC_RAW_POINT *Tps = OPENSSL_malloc(num_to_issue * sizeof(EC_RAW_POINT));
814
- EC_RAW_POINT *Sps = OPENSSL_malloc(num_to_issue * sizeof(EC_RAW_POINT));
815
- EC_RAW_POINT *Wps = OPENSSL_malloc(num_to_issue * sizeof(EC_RAW_POINT));
816
- EC_RAW_POINT *Wsps = OPENSSL_malloc(num_to_issue * sizeof(EC_RAW_POINT));
813
+ EC_JACOBIAN *Tps = OPENSSL_malloc(num_to_issue * sizeof(EC_JACOBIAN));
814
+ EC_JACOBIAN *Sps = OPENSSL_malloc(num_to_issue * sizeof(EC_JACOBIAN));
815
+ EC_JACOBIAN *Wps = OPENSSL_malloc(num_to_issue * sizeof(EC_JACOBIAN));
816
+ EC_JACOBIAN *Wsps = OPENSSL_malloc(num_to_issue * sizeof(EC_JACOBIAN));
817
817
  EC_SCALAR *es = OPENSSL_malloc(num_to_issue * sizeof(EC_SCALAR));
818
818
  CBB batch_cbb;
819
819
  CBB_zero(&batch_cbb);
@@ -831,7 +831,7 @@ static int pmbtoken_sign(const PMBTOKEN_METHOD *method,
831
831
 
832
832
  for (size_t i = 0; i < num_to_issue; i++) {
833
833
  EC_AFFINE Tp_affine;
834
- EC_RAW_POINT Tp;
834
+ EC_JACOBIAN Tp;
835
835
  if (!cbs_get_prefixed_point(cbs, group, &Tp_affine, method->prefix_point)) {
836
836
  OPENSSL_PUT_ERROR(TRUST_TOKEN, TRUST_TOKEN_R_DECODE_FAILURE);
837
837
  goto err;
@@ -846,7 +846,7 @@ static int pmbtoken_sign(const PMBTOKEN_METHOD *method,
846
846
  uint8_t s[TRUST_TOKEN_NONCE_SIZE];
847
847
  RAND_bytes(s, TRUST_TOKEN_NONCE_SIZE);
848
848
  // The |jacobians| and |affines| contain Sp, Wp, and Wsp.
849
- EC_RAW_POINT jacobians[3];
849
+ EC_JACOBIAN jacobians[3];
850
850
  EC_AFFINE affines[3];
851
851
  if (!method->hash_s(group, &jacobians[0], &Tp_affine, s) ||
852
852
  !ec_point_mul_scalar_batch(group, &jacobians[1], &Tp, &xb,
@@ -887,7 +887,7 @@ static int pmbtoken_sign(const PMBTOKEN_METHOD *method,
887
887
  }
888
888
  }
889
889
 
890
- EC_RAW_POINT Tp_batch, Sp_batch, Wp_batch, Wsp_batch;
890
+ EC_JACOBIAN Tp_batch, Sp_batch, Wp_batch, Wsp_batch;
891
891
  if (!ec_point_mul_scalar_public_batch(group, &Tp_batch,
892
892
  /*g_scalar=*/NULL, Tps, es,
893
893
  num_to_issue) ||
@@ -944,7 +944,7 @@ static STACK_OF(TRUST_TOKEN) *pmbtoken_unblind(
944
944
  return NULL;
945
945
  }
946
946
 
947
- if (count > ((size_t)-1) / sizeof(EC_RAW_POINT) ||
947
+ if (count > ((size_t)-1) / sizeof(EC_JACOBIAN) ||
948
948
  count > ((size_t)-1) / sizeof(EC_SCALAR)) {
949
949
  OPENSSL_PUT_ERROR(TRUST_TOKEN, ERR_R_OVERFLOW);
950
950
  return NULL;
@@ -952,10 +952,10 @@ static STACK_OF(TRUST_TOKEN) *pmbtoken_unblind(
952
952
 
953
953
  int ok = 0;
954
954
  STACK_OF(TRUST_TOKEN) *ret = sk_TRUST_TOKEN_new_null();
955
- EC_RAW_POINT *Tps = OPENSSL_malloc(count * sizeof(EC_RAW_POINT));
956
- EC_RAW_POINT *Sps = OPENSSL_malloc(count * sizeof(EC_RAW_POINT));
957
- EC_RAW_POINT *Wps = OPENSSL_malloc(count * sizeof(EC_RAW_POINT));
958
- EC_RAW_POINT *Wsps = OPENSSL_malloc(count * sizeof(EC_RAW_POINT));
955
+ EC_JACOBIAN *Tps = OPENSSL_malloc(count * sizeof(EC_JACOBIAN));
956
+ EC_JACOBIAN *Sps = OPENSSL_malloc(count * sizeof(EC_JACOBIAN));
957
+ EC_JACOBIAN *Wps = OPENSSL_malloc(count * sizeof(EC_JACOBIAN));
958
+ EC_JACOBIAN *Wsps = OPENSSL_malloc(count * sizeof(EC_JACOBIAN));
959
959
  EC_SCALAR *es = OPENSSL_malloc(count * sizeof(EC_SCALAR));
960
960
  CBB batch_cbb;
961
961
  CBB_zero(&batch_cbb);
@@ -1003,7 +1003,7 @@ static STACK_OF(TRUST_TOKEN) *pmbtoken_unblind(
1003
1003
  }
1004
1004
 
1005
1005
  // Unblind the token.
1006
- EC_RAW_POINT jacobians[3];
1006
+ EC_JACOBIAN jacobians[3];
1007
1007
  EC_AFFINE affines[3];
1008
1008
  if (!ec_point_mul_scalar(group, &jacobians[0], &Sps[i], &pretoken->r) ||
1009
1009
  !ec_point_mul_scalar(group, &jacobians[1], &Wps[i], &pretoken->r) ||
@@ -1050,7 +1050,7 @@ static STACK_OF(TRUST_TOKEN) *pmbtoken_unblind(
1050
1050
  }
1051
1051
  }
1052
1052
 
1053
- EC_RAW_POINT Tp_batch, Sp_batch, Wp_batch, Wsp_batch;
1053
+ EC_JACOBIAN Tp_batch, Sp_batch, Wp_batch, Wsp_batch;
1054
1054
  if (!ec_point_mul_scalar_public_batch(group, &Tp_batch,
1055
1055
  /*g_scalar=*/NULL, Tps, es, count) ||
1056
1056
  !ec_point_mul_scalar_public_batch(group, &Sp_batch,
@@ -1116,14 +1116,14 @@ static int pmbtoken_read(const PMBTOKEN_METHOD *method,
1116
1116
  OPENSSL_memcpy(out_nonce, CBS_data(&salt), CBS_len(&salt));
1117
1117
  }
1118
1118
 
1119
- EC_RAW_POINT T;
1119
+ EC_JACOBIAN T;
1120
1120
  if (!method->hash_t(group, &T, out_nonce)) {
1121
1121
  return 0;
1122
1122
  }
1123
1123
 
1124
1124
  // We perform three multiplications with S and T. This is enough that it is
1125
1125
  // worth using |ec_point_mul_scalar_precomp|.
1126
- EC_RAW_POINT S_jacobian;
1126
+ EC_JACOBIAN S_jacobian;
1127
1127
  EC_PRECOMP S_precomp, T_precomp;
1128
1128
  ec_affine_to_jacobian(group, &S_jacobian, &S);
1129
1129
  if (!ec_init_precomp(group, &S_precomp, &S_jacobian) ||
@@ -1131,7 +1131,7 @@ static int pmbtoken_read(const PMBTOKEN_METHOD *method,
1131
1131
  return 0;
1132
1132
  }
1133
1133
 
1134
- EC_RAW_POINT Ws_calculated;
1134
+ EC_JACOBIAN Ws_calculated;
1135
1135
  // Check the validity of the token.
1136
1136
  if (!ec_point_mul_scalar_precomp(group, &Ws_calculated, &T_precomp, &key->xs,
1137
1137
  &S_precomp, &key->ys, NULL, NULL) ||
@@ -1140,7 +1140,7 @@ static int pmbtoken_read(const PMBTOKEN_METHOD *method,
1140
1140
  return 0;
1141
1141
  }
1142
1142
 
1143
- EC_RAW_POINT W0, W1;
1143
+ EC_JACOBIAN W0, W1;
1144
1144
  if (!ec_point_mul_scalar_precomp(group, &W0, &T_precomp, &key->x0, &S_precomp,
1145
1145
  &key->y0, NULL, NULL) ||
1146
1146
  !ec_point_mul_scalar_precomp(group, &W1, &T_precomp, &key->x1, &S_precomp,
@@ -1164,14 +1164,14 @@ static int pmbtoken_read(const PMBTOKEN_METHOD *method,
1164
1164
 
1165
1165
  // PMBTokens experiment v1.
1166
1166
 
1167
- static int pmbtoken_exp1_hash_t(const EC_GROUP *group, EC_RAW_POINT *out,
1167
+ static int pmbtoken_exp1_hash_t(const EC_GROUP *group, EC_JACOBIAN *out,
1168
1168
  const uint8_t t[TRUST_TOKEN_NONCE_SIZE]) {
1169
1169
  const uint8_t kHashTLabel[] = "PMBTokens Experiment V1 HashT";
1170
1170
  return ec_hash_to_curve_p384_xmd_sha512_sswu_draft07(
1171
1171
  group, out, kHashTLabel, sizeof(kHashTLabel), t, TRUST_TOKEN_NONCE_SIZE);
1172
1172
  }
1173
1173
 
1174
- static int pmbtoken_exp1_hash_s(const EC_GROUP *group, EC_RAW_POINT *out,
1174
+ static int pmbtoken_exp1_hash_s(const EC_GROUP *group, EC_JACOBIAN *out,
1175
1175
  const EC_AFFINE *t,
1176
1176
  const uint8_t s[TRUST_TOKEN_NONCE_SIZE]) {
1177
1177
  const uint8_t kHashSLabel[] = "PMBTokens Experiment V1 HashS";
@@ -1337,14 +1337,14 @@ int pmbtoken_exp1_get_h_for_testing(uint8_t out[97]) {
1337
1337
 
1338
1338
  // PMBTokens experiment v2.
1339
1339
 
1340
- static int pmbtoken_exp2_hash_t(const EC_GROUP *group, EC_RAW_POINT *out,
1340
+ static int pmbtoken_exp2_hash_t(const EC_GROUP *group, EC_JACOBIAN *out,
1341
1341
  const uint8_t t[TRUST_TOKEN_NONCE_SIZE]) {
1342
1342
  const uint8_t kHashTLabel[] = "PMBTokens Experiment V2 HashT";
1343
1343
  return ec_hash_to_curve_p384_xmd_sha512_sswu_draft07(
1344
1344
  group, out, kHashTLabel, sizeof(kHashTLabel), t, TRUST_TOKEN_NONCE_SIZE);
1345
1345
  }
1346
1346
 
1347
- static int pmbtoken_exp2_hash_s(const EC_GROUP *group, EC_RAW_POINT *out,
1347
+ static int pmbtoken_exp2_hash_s(const EC_GROUP *group, EC_JACOBIAN *out,
1348
1348
  const EC_AFFINE *t,
1349
1349
  const uint8_t s[TRUST_TOKEN_NONCE_SIZE]) {
1350
1350
  const uint8_t kHashSLabel[] = "PMBTokens Experiment V2 HashS";
@@ -1508,3 +1508,177 @@ int pmbtoken_exp2_get_h_for_testing(uint8_t out[97]) {
1508
1508
  ec_point_to_bytes(pmbtoken_exp2_method.group, &h,
1509
1509
  POINT_CONVERSION_UNCOMPRESSED, out, 97) == 97;
1510
1510
  }
1511
+
1512
+ // PMBTokens PST v1.
1513
+
1514
+ static int pmbtoken_pst1_hash_t(const EC_GROUP *group, EC_JACOBIAN *out,
1515
+ const uint8_t t[TRUST_TOKEN_NONCE_SIZE]) {
1516
+ const uint8_t kHashTLabel[] = "PMBTokens PST V1 HashT";
1517
+ return ec_hash_to_curve_p384_xmd_sha384_sswu(
1518
+ group, out, kHashTLabel, sizeof(kHashTLabel), t, TRUST_TOKEN_NONCE_SIZE);
1519
+ }
1520
+
1521
+ static int pmbtoken_pst1_hash_s(const EC_GROUP *group, EC_JACOBIAN *out,
1522
+ const EC_AFFINE *t,
1523
+ const uint8_t s[TRUST_TOKEN_NONCE_SIZE]) {
1524
+ const uint8_t kHashSLabel[] = "PMBTokens PST V1 HashS";
1525
+ int ret = 0;
1526
+ CBB cbb;
1527
+ uint8_t *buf = NULL;
1528
+ size_t len;
1529
+ if (!CBB_init(&cbb, 0) ||
1530
+ !point_to_cbb(&cbb, group, t) ||
1531
+ !CBB_add_bytes(&cbb, s, TRUST_TOKEN_NONCE_SIZE) ||
1532
+ !CBB_finish(&cbb, &buf, &len) ||
1533
+ !ec_hash_to_curve_p384_xmd_sha384_sswu(
1534
+ group, out, kHashSLabel, sizeof(kHashSLabel), buf, len)) {
1535
+ goto err;
1536
+ }
1537
+
1538
+ ret = 1;
1539
+
1540
+ err:
1541
+ OPENSSL_free(buf);
1542
+ CBB_cleanup(&cbb);
1543
+ return ret;
1544
+ }
1545
+
1546
+ static int pmbtoken_pst1_hash_c(const EC_GROUP *group, EC_SCALAR *out,
1547
+ uint8_t *buf, size_t len) {
1548
+ const uint8_t kHashCLabel[] = "PMBTokens PST V1 HashC";
1549
+ return ec_hash_to_scalar_p384_xmd_sha384(
1550
+ group, out, kHashCLabel, sizeof(kHashCLabel), buf, len);
1551
+ }
1552
+
1553
+ static int pmbtoken_pst1_hash_to_scalar(const EC_GROUP *group, EC_SCALAR *out,
1554
+ uint8_t *buf, size_t len) {
1555
+ const uint8_t kHashLabel[] = "PMBTokens PST V1 HashToScalar";
1556
+ return ec_hash_to_scalar_p384_xmd_sha384(
1557
+ group, out, kHashLabel, sizeof(kHashLabel), buf, len);
1558
+ }
1559
+
1560
+ static int pmbtoken_pst1_ok = 0;
1561
+ static PMBTOKEN_METHOD pmbtoken_pst1_method;
1562
+ static CRYPTO_once_t pmbtoken_pst1_method_once = CRYPTO_ONCE_INIT;
1563
+
1564
+ static void pmbtoken_pst1_init_method_impl(void) {
1565
+ // This is the output of |ec_hash_to_scalar_p384_xmd_sha384| with DST
1566
+ // "PMBTokens PST V1 HashH" and message "generator".
1567
+ static const uint8_t kH[] = {
1568
+ 0x04, 0x4c, 0xfa, 0xd4, 0x33, 0x6d, 0x8c, 0x4e, 0x18, 0xce, 0x1a,
1569
+ 0x82, 0x7b, 0x53, 0x8c, 0xf8, 0x63, 0x18, 0xe5, 0xa3, 0x96, 0x0d,
1570
+ 0x05, 0xde, 0xf4, 0x83, 0xa7, 0xd8, 0xde, 0x9c, 0x50, 0x81, 0x38,
1571
+ 0xc9, 0x38, 0x25, 0xa3, 0x70, 0x97, 0xc1, 0x1c, 0x33, 0x2e, 0x83,
1572
+ 0x68, 0x64, 0x9c, 0x53, 0x73, 0xc3, 0x03, 0xc1, 0xa9, 0xd8, 0x92,
1573
+ 0xa2, 0x32, 0xf4, 0x22, 0x40, 0x07, 0x2d, 0x9b, 0x6f, 0xab, 0xff,
1574
+ 0x2a, 0x92, 0x03, 0xb1, 0x73, 0x09, 0x1a, 0x6a, 0x4a, 0xc2, 0x4c,
1575
+ 0xac, 0x13, 0x59, 0xf4, 0x28, 0x0e, 0x78, 0x69, 0xa5, 0xdf, 0x0d,
1576
+ 0x74, 0xeb, 0x14, 0xca, 0x8a, 0x32, 0xbb, 0xd3, 0x91
1577
+ };
1578
+
1579
+ pmbtoken_pst1_ok = pmbtoken_init_method(
1580
+ &pmbtoken_pst1_method, NID_secp384r1, kH, sizeof(kH),
1581
+ pmbtoken_pst1_hash_t, pmbtoken_pst1_hash_s, pmbtoken_pst1_hash_c,
1582
+ pmbtoken_pst1_hash_to_scalar, 0);
1583
+ }
1584
+
1585
+ static int pmbtoken_pst1_init_method(void) {
1586
+ CRYPTO_once(&pmbtoken_pst1_method_once, pmbtoken_pst1_init_method_impl);
1587
+ if (!pmbtoken_pst1_ok) {
1588
+ OPENSSL_PUT_ERROR(TRUST_TOKEN, ERR_R_INTERNAL_ERROR);
1589
+ return 0;
1590
+ }
1591
+ return 1;
1592
+ }
1593
+
1594
+ int pmbtoken_pst1_generate_key(CBB *out_private, CBB *out_public) {
1595
+ if (!pmbtoken_pst1_init_method()) {
1596
+ return 0;
1597
+ }
1598
+
1599
+ return pmbtoken_generate_key(&pmbtoken_pst1_method, out_private, out_public);
1600
+ }
1601
+
1602
+
1603
+ int pmbtoken_pst1_derive_key_from_secret(CBB *out_private, CBB *out_public,
1604
+ const uint8_t *secret,
1605
+ size_t secret_len) {
1606
+ if (!pmbtoken_pst1_init_method()) {
1607
+ return 0;
1608
+ }
1609
+
1610
+ return pmbtoken_derive_key_from_secret(&pmbtoken_pst1_method, out_private,
1611
+ out_public, secret, secret_len);
1612
+ }
1613
+
1614
+ int pmbtoken_pst1_client_key_from_bytes(TRUST_TOKEN_CLIENT_KEY *key,
1615
+ const uint8_t *in, size_t len) {
1616
+ if (!pmbtoken_pst1_init_method()) {
1617
+ return 0;
1618
+ }
1619
+ return pmbtoken_client_key_from_bytes(&pmbtoken_pst1_method, key, in, len);
1620
+ }
1621
+
1622
+ int pmbtoken_pst1_issuer_key_from_bytes(TRUST_TOKEN_ISSUER_KEY *key,
1623
+ const uint8_t *in, size_t len) {
1624
+ if (!pmbtoken_pst1_init_method()) {
1625
+ return 0;
1626
+ }
1627
+ return pmbtoken_issuer_key_from_bytes(&pmbtoken_pst1_method, key, in, len);
1628
+ }
1629
+
1630
+ STACK_OF(TRUST_TOKEN_PRETOKEN) *pmbtoken_pst1_blind(CBB *cbb, size_t count,
1631
+ int include_message,
1632
+ const uint8_t *msg,
1633
+ size_t msg_len) {
1634
+ if (!pmbtoken_pst1_init_method()) {
1635
+ return NULL;
1636
+ }
1637
+ return pmbtoken_blind(&pmbtoken_pst1_method, cbb, count, include_message, msg,
1638
+ msg_len);
1639
+ }
1640
+
1641
+ int pmbtoken_pst1_sign(const TRUST_TOKEN_ISSUER_KEY *key, CBB *cbb, CBS *cbs,
1642
+ size_t num_requested, size_t num_to_issue,
1643
+ uint8_t private_metadata) {
1644
+ if (!pmbtoken_pst1_init_method()) {
1645
+ return 0;
1646
+ }
1647
+ return pmbtoken_sign(&pmbtoken_pst1_method, key, cbb, cbs, num_requested,
1648
+ num_to_issue, private_metadata);
1649
+ }
1650
+
1651
+ STACK_OF(TRUST_TOKEN) *pmbtoken_pst1_unblind(
1652
+ const TRUST_TOKEN_CLIENT_KEY *key,
1653
+ const STACK_OF(TRUST_TOKEN_PRETOKEN) *pretokens, CBS *cbs, size_t count,
1654
+ uint32_t key_id) {
1655
+ if (!pmbtoken_pst1_init_method()) {
1656
+ return NULL;
1657
+ }
1658
+ return pmbtoken_unblind(&pmbtoken_pst1_method, key, pretokens, cbs, count,
1659
+ key_id);
1660
+ }
1661
+
1662
+ int pmbtoken_pst1_read(const TRUST_TOKEN_ISSUER_KEY *key,
1663
+ uint8_t out_nonce[TRUST_TOKEN_NONCE_SIZE],
1664
+ uint8_t *out_private_metadata, const uint8_t *token,
1665
+ size_t token_len, int include_message,
1666
+ const uint8_t *msg, size_t msg_len) {
1667
+ if (!pmbtoken_pst1_init_method()) {
1668
+ return 0;
1669
+ }
1670
+ return pmbtoken_read(&pmbtoken_pst1_method, key, out_nonce,
1671
+ out_private_metadata, token, token_len, include_message,
1672
+ msg, msg_len);
1673
+ }
1674
+
1675
+ int pmbtoken_pst1_get_h_for_testing(uint8_t out[97]) {
1676
+ if (!pmbtoken_pst1_init_method()) {
1677
+ return 0;
1678
+ }
1679
+ EC_AFFINE h;
1680
+ return ec_jacobian_to_affine(pmbtoken_pst1_method.group, &h,
1681
+ &pmbtoken_pst1_method.h) &&
1682
+ ec_point_to_bytes(pmbtoken_pst1_method.group, &h,
1683
+ POINT_CONVERSION_UNCOMPRESSED, out, 97) == 97;
1684
+ }
@@ -78,6 +78,41 @@ const TRUST_TOKEN_METHOD *TRUST_TOKEN_experiment_v2_pmb(void) {
78
78
  return &kMethod;
79
79
  }
80
80
 
81
+ const TRUST_TOKEN_METHOD *TRUST_TOKEN_pst_v1_voprf(void) {
82
+ static const TRUST_TOKEN_METHOD kMethod = {
83
+ voprf_pst1_generate_key,
84
+ voprf_pst1_derive_key_from_secret,
85
+ voprf_pst1_client_key_from_bytes,
86
+ voprf_pst1_issuer_key_from_bytes,
87
+ voprf_pst1_blind,
88
+ voprf_pst1_sign,
89
+ voprf_pst1_unblind,
90
+ voprf_pst1_read,
91
+ 0, /* has_private_metadata */
92
+ 6, /* max_keys */
93
+ 0, /* has_srr */
94
+ };
95
+ return &kMethod;
96
+ }
97
+
98
+ const TRUST_TOKEN_METHOD *TRUST_TOKEN_pst_v1_pmb(void) {
99
+ static const TRUST_TOKEN_METHOD kMethod = {
100
+ pmbtoken_pst1_generate_key,
101
+ pmbtoken_pst1_derive_key_from_secret,
102
+ pmbtoken_pst1_client_key_from_bytes,
103
+ pmbtoken_pst1_issuer_key_from_bytes,
104
+ pmbtoken_pst1_blind,
105
+ pmbtoken_pst1_sign,
106
+ pmbtoken_pst1_unblind,
107
+ pmbtoken_pst1_read,
108
+ 1, /* has_private_metadata */
109
+ 3, /* max_keys */
110
+ 0, /* has_srr */
111
+ };
112
+ return &kMethod;
113
+ }
114
+
115
+
81
116
  void TRUST_TOKEN_PRETOKEN_free(TRUST_TOKEN_PRETOKEN *pretoken) {
82
117
  OPENSSL_free(pretoken);
83
118
  }