grpc 1.84.0 → 1.85.0.pre1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1004) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +40 -27
  3. data/include/grpc/event_engine/memory_allocator.h +1 -0
  4. data/include/grpc/grpc.h +3 -0
  5. data/include/grpc/grpc_security_constants.h +2 -0
  6. data/include/grpc/impl/channel_arg_names.h +4 -0
  7. data/src/core/call/call_filters.h +10 -10
  8. data/src/core/{lib/security/authorization → call}/evaluate_args.cc +22 -1
  9. data/src/core/{lib/security/authorization → call}/evaluate_args.h +19 -5
  10. data/src/core/call/filter_fusion.h +15 -15
  11. data/src/core/call/interception_chain.h +3 -3
  12. data/src/core/call/metadata_batch.cc +1 -0
  13. data/src/core/call/metadata_batch.h +45 -33
  14. data/src/core/call/parsed_metadata.h +3 -3
  15. data/src/core/call/request_buffer.cc +6 -6
  16. data/src/core/call/request_buffer.h +1 -1
  17. data/src/core/channelz/channel_trace.cc +5 -5
  18. data/src/core/channelz/channel_trace.h +1 -1
  19. data/src/core/channelz/channelz.cc +9 -9
  20. data/src/core/channelz/channelz.h +12 -12
  21. data/src/core/channelz/channelz_registry.cc +10 -10
  22. data/src/core/channelz/ztrace_collector.h +5 -5
  23. data/src/core/client_channel/client_channel.cc +4 -4
  24. data/src/core/client_channel/client_channel_filter.cc +14 -14
  25. data/src/core/client_channel/global_subchannel_pool.cc +4 -4
  26. data/src/core/client_channel/subchannel.cc +24 -23
  27. data/src/core/client_channel/subchannel_stream_client.cc +5 -5
  28. data/src/core/credentials/call/external/aws_external_account_credentials.cc +7 -7
  29. data/src/core/credentials/call/external/aws_request_signer.cc +16 -0
  30. data/src/core/credentials/call/external/external_account_credentials.cc +4 -4
  31. data/src/core/credentials/call/regional_access_boundary_fetcher.cc +9 -9
  32. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +4 -4
  33. data/src/core/credentials/transport/google_default/google_default_credentials.cc +3 -3
  34. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +1 -1
  35. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +9 -9
  36. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +1 -1
  37. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +6 -6
  38. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +3 -3
  39. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +4 -4
  40. data/src/core/credentials/transport/tls/ssl_utils.cc +10 -0
  41. data/src/core/credentials/transport/tls/tls_security_connector.cc +10 -10
  42. data/src/core/credentials/transport/tls/tls_security_connector.h +6 -6
  43. data/src/core/credentials/transport/tls/tls_utils.h +9 -0
  44. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +1 -1
  45. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
  46. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
  47. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +1 -1
  48. data/src/core/ext/filters/http/message_compress/compression_filter.cc +15 -0
  49. data/src/core/ext/filters/rbac/rbac_filter.h +1 -1
  50. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +5 -5
  51. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +30 -21
  52. data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -11
  53. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +14 -11
  54. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
  55. data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -4
  56. data/src/core/ext/transport/chttp2/transport/frame.h +9 -0
  57. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -9
  58. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -2
  59. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +16 -18
  60. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +2 -1
  61. data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +277 -189
  62. data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +40 -17
  63. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +12 -24
  64. data/src/core/ext/transport/chttp2/transport/http2_transport.h +3 -29
  65. data/src/core/ext/transport/chttp2/transport/internal.h +2 -2
  66. data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
  67. data/src/core/ext/transport/chttp2/transport/read_context.h +96 -3
  68. data/src/core/ext/transport/chttp2/transport/reclaimer.cc +32 -0
  69. data/src/core/ext/transport/chttp2/transport/reclaimer.h +64 -0
  70. data/src/core/ext/transport/chttp2/transport/security_frame.h +8 -8
  71. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +17 -9
  72. data/src/core/ext/transport/chttp2/transport/write_cycle.h +23 -3
  73. data/src/core/ext/transport/inproc/inproc_transport.cc +5 -5
  74. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb.h +137 -73
  75. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb_minitable.c +45 -25
  76. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb.h +6 -6
  77. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.c +4 -4
  78. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.h +5 -5
  79. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb.h +46 -26
  80. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.c +17 -14
  81. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.h +5 -5
  82. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb.h +5 -5
  83. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.c +3 -3
  84. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.h +5 -5
  85. data/src/core/ext/upb-gen/grpc/health/v1/health.upb.h +329 -0
  86. data/src/core/ext/upb-gen/grpc/health/v1/health.upb_minitable.c +128 -0
  87. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/health/v1/health.upb_minitable.h +8 -5
  88. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb.h +5 -5
  89. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.c +3 -3
  90. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.h +5 -5
  91. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb.h +185 -23
  92. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.c +20 -12
  93. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.h +5 -5
  94. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb.h +58 -42
  95. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.c +17 -12
  96. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.h +5 -5
  97. data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +567 -549
  98. data/src/core/ext/upbdefs-gen/grpc/lookup/v1/rls_config.upbdefs.c +182 -0
  99. data/src/core/ext/upbdefs-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upbdefs.h +14 -14
  100. data/src/core/filter/ext_proc/ext_proc_filter.cc +1603 -46
  101. data/src/core/filter/ext_proc/ext_proc_filter.h +55 -22
  102. data/src/core/filter/ext_proc/ext_proc_messages.cc +106 -51
  103. data/src/core/filter/ext_proc/ext_proc_messages.h +36 -9
  104. data/src/core/handshaker/handshaker.cc +4 -4
  105. data/src/core/handshaker/http_connect/http_connect_client_handshaker.cc +3 -3
  106. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +10 -10
  107. data/src/core/handshaker/security/secure_endpoint.cc +13 -13
  108. data/src/core/handshaker/security/security_handshaker.cc +6 -6
  109. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +4 -4
  110. data/src/core/lib/channel/channel_args.cc +20 -0
  111. data/src/core/lib/channel/channel_args.h +17 -17
  112. data/src/core/lib/channel/promise_based_filter.cc +2 -2
  113. data/src/core/lib/channel/promise_based_filter.h +66 -27
  114. data/src/core/lib/debug/trace_flags.cc +2 -0
  115. data/src/core/lib/debug/trace_flags.h +1 -0
  116. data/src/core/lib/event_engine/ares_resolver.cc +14 -14
  117. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +7 -7
  118. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +4 -4
  119. data/src/core/lib/event_engine/default_event_engine.cc +5 -5
  120. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +9 -9
  121. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +16 -14
  122. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +6 -6
  123. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +3 -3
  124. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1 -1
  125. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +7 -7
  126. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +17 -17
  127. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +3 -3
  128. data/src/core/lib/event_engine/posix_engine/timer.cc +5 -5
  129. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +5 -5
  130. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +3 -3
  131. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +1 -1
  132. data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
  133. data/src/core/lib/event_engine/thread_pool/thread_count.h +3 -3
  134. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +50 -21
  135. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +3 -3
  136. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +3 -3
  137. data/src/core/lib/event_engine/windows/windows_engine.cc +15 -15
  138. data/src/core/lib/event_engine/windows/windows_listener.cc +6 -6
  139. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +6 -6
  140. data/src/core/lib/experiments/experiments.cc +48 -0
  141. data/src/core/lib/experiments/experiments.h +24 -0
  142. data/src/core/lib/iomgr/buffer_list.cc +3 -3
  143. data/src/core/lib/iomgr/buffer_list.h +1 -1
  144. data/src/core/lib/iomgr/combiner.cc +0 -1
  145. data/src/core/lib/iomgr/ev_apple.cc +4 -4
  146. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
  147. data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
  148. data/src/core/lib/iomgr/tcp_posix.cc +7 -7
  149. data/src/core/lib/promise/activity.cc +1 -1
  150. data/src/core/lib/promise/activity.h +1 -1
  151. data/src/core/lib/promise/arena_promise.h +7 -7
  152. data/src/core/lib/promise/detail/promise_factory.h +8 -8
  153. data/src/core/lib/promise/detail/promise_like.h +4 -4
  154. data/src/core/lib/promise/inter_activity_latch.h +6 -6
  155. data/src/core/lib/promise/inter_activity_pipe.h +1 -1
  156. data/src/core/lib/promise/observable.h +3 -3
  157. data/src/core/lib/promise/party.cc +1 -1
  158. data/src/core/lib/promise/try_seq.h +2 -2
  159. data/src/core/lib/resource_quota/arena.h +3 -3
  160. data/src/core/lib/resource_quota/memory_quota.cc +16 -16
  161. data/src/core/lib/resource_quota/memory_quota.h +1 -1
  162. data/src/core/lib/resource_quota/thread_quota.cc +3 -3
  163. data/src/core/lib/security/authorization/audit_logging.cc +5 -5
  164. data/src/core/lib/security/authorization/authorization_engine.h +1 -1
  165. data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -1
  166. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
  167. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  168. data/src/core/lib/security/authorization/matchers.h +1 -1
  169. data/src/core/lib/surface/call.cc +8 -7
  170. data/src/core/lib/surface/call.h +3 -3
  171. data/src/core/lib/surface/call_utils.h +4 -0
  172. data/src/core/lib/surface/channel.cc +1 -1
  173. data/src/core/lib/surface/channel.h +1 -1
  174. data/src/core/lib/surface/channel_init.cc +1 -1
  175. data/src/core/lib/surface/init.cc +7 -7
  176. data/src/core/lib/surface/lame_client.cc +1 -1
  177. data/src/core/lib/surface/legacy_channel.cc +2 -2
  178. data/src/core/lib/surface/version.cc +1 -1
  179. data/src/core/lib/transport/transport_framing_endpoint_extension.h +3 -3
  180. data/src/core/load_balancing/autosharding/autosharding.cc +931 -0
  181. data/src/core/load_balancing/autosharding/autosharding.h +78 -0
  182. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -2
  183. data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
  184. data/src/core/load_balancing/grpclb/load_balancer_api.h +3 -1
  185. data/src/core/load_balancing/health_check_client.cc +7 -7
  186. data/src/core/load_balancing/lb_policy.cc +1 -1
  187. data/src/core/load_balancing/oob_backend_metric.cc +5 -5
  188. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
  189. data/src/core/load_balancing/ring_hash/ring_hash.cc +109 -37
  190. data/src/core/load_balancing/rls/rls.cc +23 -17
  191. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +10 -10
  192. data/src/core/load_balancing/xds/cds.cc +6 -5
  193. data/src/core/load_balancing/xds/xds_cluster_impl.cc +2 -2
  194. data/src/core/load_balancing/xds/xds_override_host.cc +10 -10
  195. data/src/core/mitigation_engine/mitigation_engine.h +28 -4
  196. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -0
  197. data/src/core/resolver/dns/dns_resolver.cc +7 -7
  198. data/src/core/resolver/fake/fake_resolver.cc +5 -5
  199. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +38 -30
  200. data/src/core/server/server.cc +30 -30
  201. data/src/core/server/server.h +4 -3
  202. data/src/core/server/server_config_selector_filter.cc +3 -3
  203. data/src/core/server/xds_server_config_fetcher_legacy.cc +15 -15
  204. data/src/core/telemetry/default_tcp_tracer.cc +1 -1
  205. data/src/core/telemetry/instrument.cc +30 -16
  206. data/src/core/telemetry/instrument.h +3 -3
  207. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
  208. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -4
  209. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +2 -2
  210. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  211. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -1
  212. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +5 -5
  213. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +3 -3
  214. data/src/core/tsi/ssl_transport_security.cc +46 -13
  215. data/src/core/tsi/ssl_transport_security.h +7 -0
  216. data/src/core/tsi/ssl_transport_security_utils.cc +16 -6
  217. data/src/core/util/event_log.cc +3 -3
  218. data/src/core/util/http_client/httpcli.cc +5 -5
  219. data/src/core/util/http_client/httpcli.h +1 -1
  220. data/src/core/util/json/json_object_loader.cc +7 -0
  221. data/src/core/util/json/json_object_loader.h +17 -2
  222. data/src/core/util/latent_see.cc +123 -36
  223. data/src/core/util/latent_see.h +14 -1
  224. data/src/core/util/mpscq.cc +1 -1
  225. data/src/core/util/notification.h +4 -4
  226. data/src/core/util/sync.h +20 -6
  227. data/src/core/util/table.h +20 -22
  228. data/src/core/util/work_serializer.cc +2 -2
  229. data/src/core/xds/grpc/blackboard.cc +4 -3
  230. data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
  231. data/src/core/xds/grpc/streaming_call_promise_wrapper.cc +181 -0
  232. data/src/core/xds/grpc/streaming_call_promise_wrapper.h +213 -0
  233. data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +2 -2
  234. data/src/core/xds/grpc/xds_client_grpc.cc +8 -8
  235. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
  236. data/src/core/xds/grpc/xds_endpoint.cc +1 -1
  237. data/src/core/xds/grpc/xds_endpoint_parser.cc +11 -0
  238. data/src/core/xds/grpc/xds_grpc_service_parser.cc +12 -10
  239. data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +17 -14
  240. data/src/core/xds/grpc/xds_matcher.h +2 -2
  241. data/src/core/xds/grpc/xds_transport_grpc.cc +125 -85
  242. data/src/core/xds/grpc/xds_transport_grpc.h +19 -4
  243. data/src/core/xds/xds_client/lrs_client.cc +22 -19
  244. data/src/core/xds/xds_client/xds_client.cc +19 -16
  245. data/src/core/xds/xds_client/xds_transport.h +49 -3
  246. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  247. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
  248. data/src/ruby/lib/grpc/version.rb +1 -1
  249. data/src/ruby/pb/README.md +1 -1
  250. data/src/ruby/pb/generate_proto_ruby.sh +1 -1
  251. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +34 -2
  252. data/third_party/abseil-cpp/absl/algorithm/container.h +345 -147
  253. data/third_party/abseil-cpp/absl/base/attributes.h +67 -44
  254. data/third_party/abseil-cpp/absl/base/call_once.h +1 -0
  255. data/third_party/abseil-cpp/absl/base/casts.cc +61 -0
  256. data/third_party/abseil-cpp/absl/base/casts.h +135 -2
  257. data/third_party/abseil-cpp/absl/base/config.h +63 -41
  258. data/third_party/abseil-cpp/absl/base/fast_type_id.h +30 -2
  259. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
  260. data/third_party/abseil-cpp/absl/base/internal/hardening.h +136 -0
  261. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +6 -2
  262. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -4
  263. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
  264. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
  265. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
  266. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +26 -24
  267. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +74 -29
  268. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -11
  269. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
  270. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +5 -1
  271. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
  272. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
  273. data/third_party/abseil-cpp/absl/base/macros.h +76 -37
  274. data/third_party/abseil-cpp/absl/base/nullability.h +5 -5
  275. data/third_party/abseil-cpp/absl/base/optimization.h +4 -5
  276. data/third_party/abseil-cpp/absl/base/options.h +46 -18
  277. data/third_party/abseil-cpp/absl/base/policy_checks.h +5 -5
  278. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
  279. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
  280. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +7 -2
  281. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
  282. data/third_party/abseil-cpp/absl/container/btree_map.h +60 -10
  283. data/third_party/abseil-cpp/absl/container/btree_set.h +61 -15
  284. data/third_party/abseil-cpp/absl/container/fixed_array.h +19 -21
  285. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +49 -27
  286. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +50 -26
  287. data/third_party/abseil-cpp/absl/container/inlined_vector.h +42 -36
  288. data/third_party/abseil-cpp/absl/container/internal/btree.h +32 -24
  289. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +30 -22
  290. data/third_party/abseil-cpp/absl/container/internal/common.h +57 -5
  291. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
  292. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +40 -36
  293. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +119 -39
  294. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +14 -2
  295. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +14 -22
  296. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +52 -52
  297. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +7 -7
  298. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +7 -7
  299. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +32 -40
  300. data/third_party/abseil-cpp/absl/container/internal/layout.h +13 -13
  301. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +95 -72
  302. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +633 -365
  303. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1016 -749
  304. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +0 -1
  305. data/third_party/abseil-cpp/absl/container/node_hash_map.h +58 -35
  306. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +23 -6
  307. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
  308. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -6
  309. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
  310. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
  311. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
  312. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +304 -188
  313. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
  314. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
  315. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
  316. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
  317. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc +15 -1
  318. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -1
  319. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +12 -1
  320. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
  321. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -11
  322. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
  323. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
  324. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +6 -1
  325. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +14 -8
  326. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +48 -38
  327. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
  328. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +63 -118
  329. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +7 -47
  330. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +20 -2
  331. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +83 -149
  332. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
  333. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
  334. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
  335. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +8 -6
  336. data/third_party/abseil-cpp/absl/flags/declare.h +9 -0
  337. data/third_party/abseil-cpp/absl/flags/flag.h +2 -1
  338. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
  339. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +19 -18
  340. data/third_party/abseil-cpp/absl/flags/internal/flag.h +33 -34
  341. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
  342. data/third_party/abseil-cpp/absl/flags/marshalling.cc +1 -16
  343. data/third_party/abseil-cpp/absl/flags/marshalling.h +2 -28
  344. data/third_party/abseil-cpp/absl/flags/reflection.cc +11 -7
  345. data/third_party/abseil-cpp/absl/flags/usage_config.cc +2 -2
  346. data/third_party/abseil-cpp/absl/functional/any_invocable.h +22 -19
  347. data/third_party/abseil-cpp/absl/functional/bind_front.h +7 -1
  348. data/third_party/abseil-cpp/absl/functional/function_ref.h +125 -20
  349. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +43 -31
  350. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
  351. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +44 -6
  352. data/third_party/abseil-cpp/absl/hash/hash.h +1 -1
  353. data/third_party/abseil-cpp/absl/hash/internal/city.cc +39 -51
  354. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +379 -14
  355. data/third_party/abseil-cpp/absl/hash/internal/hash.h +457 -353
  356. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
  357. data/third_party/abseil-cpp/absl/log/internal/check_impl.h +2 -1
  358. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +4 -0
  359. data/third_party/abseil-cpp/absl/log/internal/check_op.h +128 -50
  360. data/third_party/abseil-cpp/absl/log/internal/conditions.h +38 -35
  361. data/third_party/abseil-cpp/absl/log/internal/log_impl.h +108 -110
  362. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +10 -6
  363. data/third_party/abseil-cpp/absl/log/internal/log_message.h +19 -1
  364. data/third_party/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
  365. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -1
  366. data/third_party/abseil-cpp/absl/log/internal/proto.cc +13 -0
  367. data/third_party/abseil-cpp/absl/log/internal/strip.h +30 -31
  368. data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
  369. data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
  370. data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +30 -30
  371. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
  372. data/third_party/abseil-cpp/absl/log/log.h +2 -2
  373. data/third_party/abseil-cpp/absl/log/log_entry.cc +263 -0
  374. data/third_party/abseil-cpp/absl/log/log_entry.h +2 -0
  375. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +0 -2
  376. data/third_party/abseil-cpp/absl/memory/memory.h +55 -5
  377. data/third_party/abseil-cpp/absl/meta/type_traits.h +161 -56
  378. data/third_party/abseil-cpp/absl/numeric/int128.h +41 -21
  379. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
  380. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
  381. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +32 -4
  382. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
  383. data/third_party/abseil-cpp/absl/random/beta_distribution.h +2 -2
  384. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
  385. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +1 -1
  386. data/third_party/abseil-cpp/absl/random/distributions.h +17 -17
  387. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -1
  388. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
  389. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.cc +2 -2
  390. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
  391. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
  392. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
  393. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
  394. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
  395. data/third_party/abseil-cpp/absl/random/internal/platform.h +0 -13
  396. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
  397. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
  398. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
  399. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +5 -31
  400. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +2 -1
  401. data/third_party/abseil-cpp/absl/random/internal/traits.h +21 -0
  402. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
  403. data/third_party/abseil-cpp/absl/random/mocking_access.h +74 -0
  404. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  405. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
  406. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +30 -4
  407. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +225 -63
  408. data/third_party/abseil-cpp/absl/status/status.cc +66 -70
  409. data/third_party/abseil-cpp/absl/status/status.h +254 -23
  410. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +3 -2
  411. data/third_party/abseil-cpp/absl/status/statusor.h +117 -137
  412. data/third_party/abseil-cpp/absl/strings/ascii.h +10 -6
  413. data/third_party/abseil-cpp/absl/strings/cord.cc +41 -17
  414. data/third_party/abseil-cpp/absl/strings/cord.h +26 -17
  415. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +4 -2
  416. data/third_party/abseil-cpp/absl/strings/escaping.cc +305 -125
  417. data/third_party/abseil-cpp/absl/strings/escaping.h +12 -2
  418. data/third_party/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
  419. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +2 -2
  420. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
  421. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +27 -21
  422. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +11 -19
  423. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
  424. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
  425. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
  426. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +2 -24
  427. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -36
  428. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
  429. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
  430. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
  431. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
  432. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +921 -231
  433. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -16
  434. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +16 -12
  435. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
  436. data/third_party/abseil-cpp/absl/strings/numbers.cc +477 -8
  437. data/third_party/abseil-cpp/absl/strings/numbers.h +29 -12
  438. data/third_party/abseil-cpp/absl/strings/resize_and_overwrite.h +198 -0
  439. data/third_party/abseil-cpp/absl/strings/str_cat.cc +96 -91
  440. data/third_party/abseil-cpp/absl/strings/str_cat.h +53 -13
  441. data/third_party/abseil-cpp/absl/strings/str_split.h +14 -9
  442. data/third_party/abseil-cpp/absl/strings/string_view.h +10 -716
  443. data/third_party/abseil-cpp/absl/strings/substitute.cc +24 -24
  444. data/third_party/abseil-cpp/absl/strings/substitute.h +2 -2
  445. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +1 -1
  446. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
  447. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +24 -3
  448. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
  449. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
  450. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
  451. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +41 -29
  452. data/third_party/abseil-cpp/absl/synchronization/mutex.h +199 -94
  453. data/third_party/abseil-cpp/absl/synchronization/notification.cc +5 -5
  454. data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
  455. data/third_party/abseil-cpp/absl/time/clock.cc +29 -30
  456. data/third_party/abseil-cpp/absl/time/clock.h +3 -0
  457. data/third_party/abseil-cpp/absl/time/duration.cc +2 -2
  458. data/third_party/abseil-cpp/absl/time/format.cc +3 -10
  459. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
  460. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +131 -91
  461. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
  462. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +185 -0
  463. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
  464. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
  465. data/third_party/abseil-cpp/absl/time/time.cc +4 -4
  466. data/third_party/abseil-cpp/absl/time/time.h +14 -13
  467. data/third_party/abseil-cpp/absl/types/compare.h +64 -63
  468. data/third_party/abseil-cpp/absl/types/internal/span.h +6 -6
  469. data/third_party/abseil-cpp/absl/types/optional.h +31 -4
  470. data/third_party/abseil-cpp/absl/types/optional_ref.h +295 -0
  471. data/third_party/{boringssl-with-bazel/crypto/x509/x_val.cc → abseil-cpp/absl/types/source_location.cc} +4 -14
  472. data/third_party/abseil-cpp/absl/types/source_location.h +172 -0
  473. data/third_party/abseil-cpp/absl/types/span.h +67 -38
  474. data/third_party/abseil-cpp/absl/types/variant.h +75 -18
  475. data/third_party/abseil-cpp/absl/utility/utility.h +112 -16
  476. data/third_party/boringssl-with-bazel/crypto/aes/aes.cc +3 -0
  477. data/third_party/boringssl-with-bazel/crypto/armv8_feature_parsing.h +67 -0
  478. data/third_party/boringssl-with-bazel/crypto/asn1/a_bitstr.cc +143 -105
  479. data/third_party/boringssl-with-bazel/crypto/asn1/a_bool.cc +5 -8
  480. data/third_party/boringssl-with-bazel/crypto/asn1/a_d2i_fp.cc +3 -3
  481. data/third_party/boringssl-with-bazel/crypto/asn1/a_dup.cc +6 -6
  482. data/third_party/boringssl-with-bazel/crypto/asn1/a_gentm.cc +33 -12
  483. data/third_party/boringssl-with-bazel/crypto/asn1/a_i2d_fp.cc +7 -6
  484. data/third_party/boringssl-with-bazel/crypto/asn1/a_int.cc +80 -52
  485. data/third_party/boringssl-with-bazel/crypto/asn1/a_mbstr.cc +7 -4
  486. data/third_party/boringssl-with-bazel/crypto/asn1/a_object.cc +70 -72
  487. data/third_party/boringssl-with-bazel/crypto/asn1/a_strex.cc +38 -42
  488. data/third_party/boringssl-with-bazel/crypto/asn1/a_strnid.cc +41 -39
  489. data/third_party/boringssl-with-bazel/crypto/asn1/a_time.cc +59 -35
  490. data/third_party/boringssl-with-bazel/crypto/asn1/a_type.cc +275 -15
  491. data/third_party/boringssl-with-bazel/crypto/asn1/a_utctm.cc +32 -13
  492. data/third_party/boringssl-with-bazel/crypto/asn1/asn1_lib.cc +128 -30
  493. data/third_party/boringssl-with-bazel/crypto/asn1/asn_pack.cc +10 -10
  494. data/third_party/boringssl-with-bazel/crypto/asn1/f_int.cc +1 -1
  495. data/third_party/boringssl-with-bazel/crypto/asn1/f_string.cc +1 -1
  496. data/third_party/boringssl-with-bazel/crypto/asn1/internal.h +261 -115
  497. data/third_party/boringssl-with-bazel/crypto/asn1/posix_time.cc +8 -5
  498. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_dec.cc +373 -725
  499. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_enc.cc +211 -526
  500. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_fre.cc +22 -19
  501. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_new.cc +26 -24
  502. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_typ.cc +19 -5
  503. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_utl.cc +47 -51
  504. data/third_party/boringssl-with-bazel/crypto/base64/base64.cc +14 -15
  505. data/third_party/boringssl-with-bazel/crypto/bcm_support.h +7 -29
  506. data/third_party/boringssl-with-bazel/crypto/bio/bio.cc +234 -176
  507. data/third_party/boringssl-with-bazel/crypto/bio/bio_mem.cc +72 -86
  508. data/third_party/boringssl-with-bazel/crypto/bio/connect.cc +153 -199
  509. data/third_party/boringssl-with-bazel/crypto/bio/errno.cc +3 -1
  510. data/third_party/boringssl-with-bazel/crypto/bio/fd.cc +56 -55
  511. data/third_party/boringssl-with-bazel/crypto/bio/file.cc +70 -78
  512. data/third_party/boringssl-with-bazel/crypto/bio/hexdump.cc +6 -4
  513. data/third_party/boringssl-with-bazel/crypto/bio/internal.h +69 -17
  514. data/third_party/boringssl-with-bazel/crypto/bio/pair.cc +117 -136
  515. data/third_party/boringssl-with-bazel/crypto/bio/printf.cc +1 -1
  516. data/third_party/boringssl-with-bazel/crypto/bio/socket.cc +116 -50
  517. data/third_party/boringssl-with-bazel/crypto/bio/socket_helper.cc +53 -5
  518. data/third_party/boringssl-with-bazel/crypto/blake2/blake2.cc +9 -5
  519. data/third_party/boringssl-with-bazel/crypto/bn/bn_asn1.cc +2 -2
  520. data/third_party/boringssl-with-bazel/crypto/bn/convert.cc +56 -70
  521. data/third_party/boringssl-with-bazel/crypto/bn/div.cc +102 -0
  522. data/third_party/boringssl-with-bazel/crypto/bn/exponentiation.cc +26 -42
  523. data/third_party/boringssl-with-bazel/crypto/bn/sqrt.cc +93 -0
  524. data/third_party/boringssl-with-bazel/crypto/buf/buf.cc +6 -5
  525. data/third_party/boringssl-with-bazel/crypto/bytestring/asn1_compat.cc +6 -5
  526. data/third_party/boringssl-with-bazel/crypto/bytestring/ber.cc +22 -20
  527. data/third_party/boringssl-with-bazel/crypto/bytestring/cbb.cc +119 -59
  528. data/third_party/boringssl-with-bazel/crypto/bytestring/cbs.cc +115 -31
  529. data/third_party/boringssl-with-bazel/crypto/bytestring/internal.h +79 -24
  530. data/third_party/boringssl-with-bazel/crypto/bytestring/unicode.cc +2 -2
  531. data/third_party/boringssl-with-bazel/crypto/chacha/chacha.cc +5 -3
  532. data/third_party/boringssl-with-bazel/crypto/chacha/internal.h +23 -22
  533. data/third_party/boringssl-with-bazel/crypto/cipher/derive_key.cc +14 -18
  534. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesctrhmac.cc +73 -58
  535. data/third_party/boringssl-with-bazel/crypto/cipher/e_aeseax.cc +132 -70
  536. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesgcmsiv.cc +390 -249
  537. data/third_party/boringssl-with-bazel/crypto/cipher/e_chacha20poly1305.cc +200 -137
  538. data/third_party/boringssl-with-bazel/crypto/cipher/e_des.cc +45 -29
  539. data/third_party/boringssl-with-bazel/crypto/cipher/e_null.cc +9 -5
  540. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc2.cc +43 -28
  541. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc4.cc +7 -5
  542. data/third_party/boringssl-with-bazel/crypto/cipher/e_tls.cc +250 -237
  543. data/third_party/boringssl-with-bazel/crypto/cipher/get_cipher.cc +12 -12
  544. data/third_party/boringssl-with-bazel/crypto/cipher/internal.h +59 -59
  545. data/third_party/boringssl-with-bazel/crypto/cipher/tls_cbc.cc +111 -111
  546. data/third_party/boringssl-with-bazel/crypto/cms/cms.cc +48 -42
  547. data/third_party/boringssl-with-bazel/crypto/conf/conf.cc +69 -63
  548. data/third_party/boringssl-with-bazel/crypto/conf/internal.h +11 -12
  549. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_apple.cc +8 -5
  550. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_fuchsia.cc +6 -1
  551. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_linux.cc +7 -1
  552. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_openbsd.cc +7 -21
  553. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_sysreg.cc +15 -41
  554. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_win.cc +16 -3
  555. data/third_party/boringssl-with-bazel/crypto/cpu_arm_freebsd.cc +4 -2
  556. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.cc +54 -31
  557. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.h +79 -101
  558. data/third_party/boringssl-with-bazel/crypto/cpu_intel.cc +51 -45
  559. data/third_party/boringssl-with-bazel/crypto/crypto.cc +26 -55
  560. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519.cc +28 -25
  561. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519_tables.h +6 -6
  562. data/third_party/boringssl-with-bazel/crypto/curve25519/internal.h +14 -15
  563. data/third_party/boringssl-with-bazel/crypto/curve25519/spake25519.cc +23 -20
  564. data/third_party/boringssl-with-bazel/crypto/des/des.cc +27 -19
  565. data/third_party/boringssl-with-bazel/crypto/des/internal.h +4 -9
  566. data/third_party/boringssl-with-bazel/crypto/dh/dh_asn1.cc +34 -49
  567. data/third_party/boringssl-with-bazel/crypto/dh/params.cc +44 -41
  568. data/third_party/boringssl-with-bazel/crypto/digest/digest_extra.cc +87 -40
  569. data/third_party/boringssl-with-bazel/crypto/dsa/dsa.cc +237 -260
  570. data/third_party/boringssl-with-bazel/crypto/dsa/dsa_asn1.cc +100 -173
  571. data/third_party/boringssl-with-bazel/crypto/dsa/internal.h +23 -21
  572. data/third_party/boringssl-with-bazel/crypto/ec/ec_asn1.cc +181 -209
  573. data/third_party/boringssl-with-bazel/crypto/ec/ec_derive.cc +26 -28
  574. data/third_party/boringssl-with-bazel/crypto/ec/hash_to_curve.cc +265 -174
  575. data/third_party/boringssl-with-bazel/crypto/ec/internal.h +54 -18
  576. data/third_party/boringssl-with-bazel/crypto/ecdh/ecdh.cc +7 -5
  577. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_asn1.cc +50 -70
  578. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_p1363.cc +54 -0
  579. data/third_party/boringssl-with-bazel/crypto/engine/engine.cc +7 -7
  580. data/third_party/boringssl-with-bazel/crypto/err/err.cc +116 -105
  581. data/third_party/boringssl-with-bazel/crypto/err/internal.h +8 -21
  582. data/third_party/boringssl-with-bazel/crypto/evp/evp.cc +238 -166
  583. data/third_party/boringssl-with-bazel/crypto/evp/evp_asn1.cc +202 -234
  584. data/third_party/boringssl-with-bazel/crypto/evp/evp_ctx.cc +260 -159
  585. data/third_party/boringssl-with-bazel/crypto/evp/evp_kem.cc +82 -0
  586. data/third_party/boringssl-with-bazel/crypto/evp/internal.h +292 -137
  587. data/third_party/boringssl-with-bazel/crypto/evp/p_dh.cc +198 -25
  588. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa.cc +333 -0
  589. data/third_party/boringssl-with-bazel/crypto/evp/p_ec.cc +427 -42
  590. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519.cc +270 -14
  591. data/third_party/boringssl-with-bazel/crypto/evp/p_hkdf.cc +70 -102
  592. data/third_party/boringssl-with-bazel/crypto/evp/p_mldsa.cc +549 -0
  593. data/third_party/boringssl-with-bazel/crypto/evp/p_mlkem.cc +485 -0
  594. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa.cc +666 -158
  595. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519.cc +290 -28
  596. data/third_party/boringssl-with-bazel/crypto/evp/p_xwing.cc +273 -0
  597. data/third_party/boringssl-with-bazel/crypto/evp/pbkdf.cc +14 -7
  598. data/third_party/boringssl-with-bazel/crypto/evp/print.cc +34 -89
  599. data/third_party/boringssl-with-bazel/crypto/evp/scrypt.cc +23 -21
  600. data/third_party/boringssl-with-bazel/crypto/evp/sign.cc +23 -42
  601. data/third_party/boringssl-with-bazel/crypto/ex_data.cc +40 -41
  602. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes.cc.inc +34 -28
  603. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes_nohw.cc.inc +119 -121
  604. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cbc.cc.inc +16 -14
  605. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cfb.cc.inc +12 -10
  606. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ctr.cc.inc +7 -5
  607. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm.cc.inc +39 -29
  608. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm_nohw.cc.inc +15 -13
  609. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/internal.h +193 -177
  610. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/key_wrap.cc.inc +5 -3
  611. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/mode_wrappers.cc.inc +7 -3
  612. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ofb.cc.inc +7 -5
  613. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm.cc +24 -19
  614. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm_interface.h +512 -384
  615. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/add.cc.inc +7 -5
  616. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +63 -44
  617. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bn.cc.inc +40 -37
  618. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bytes.cc.inc +27 -22
  619. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/cmp.cc.inc +9 -7
  620. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/ctx.cc.inc +62 -126
  621. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div.cc.inc +92 -167
  622. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div_extra.cc.inc +15 -12
  623. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/exponentiation.cc.inc +96 -93
  624. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd.cc.inc +73 -92
  625. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd_extra.cc.inc +59 -71
  626. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/generic.cc.inc +54 -57
  627. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/internal.h +333 -255
  628. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/jacobi.cc.inc +12 -19
  629. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery.cc.inc +80 -95
  630. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery_inv.cc.inc +53 -96
  631. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/mul.cc.inc +58 -419
  632. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/prime.cc.inc +164 -213
  633. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/random.cc.inc +27 -26
  634. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.cc.inc +12 -10
  635. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.h +47 -49
  636. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/shift.cc.inc +14 -17
  637. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/sqrt.cc.inc +19 -108
  638. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/aead.cc.inc +427 -105
  639. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/cipher.cc.inc +412 -212
  640. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aes.cc.inc +230 -225
  641. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aesccm.cc.inc +115 -84
  642. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/internal.h +374 -27
  643. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cmac/cmac.cc.inc +28 -23
  644. data/third_party/boringssl-with-bazel/crypto/fipsmodule/delocate.h +36 -40
  645. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/check.cc.inc +68 -78
  646. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/dh.cc.inc +154 -196
  647. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/internal.h +24 -24
  648. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digest.cc.inc +40 -69
  649. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digests.cc.inc +13 -7
  650. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/internal.h +13 -11
  651. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/md32_common.h +86 -81
  652. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digestsign/digestsign.cc.inc +38 -34
  653. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec.cc.inc +187 -196
  654. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_key.cc.inc +196 -154
  655. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_montgomery.cc.inc +65 -125
  656. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/felem.cc.inc +85 -22
  657. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/internal.h +281 -287
  658. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/oct.cc.inc +23 -22
  659. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256.cc.inc +514 -573
  660. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256_internal.h +193 -0
  661. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/scalar.cc.inc +44 -39
  662. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple.cc.inc +58 -90
  663. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple_mul.cc.inc +39 -34
  664. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/util.cc.inc +6 -3
  665. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/wnaf.cc.inc +23 -20
  666. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdh/ecdh.cc.inc +6 -3
  667. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +47 -37
  668. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/internal.h +5 -10
  669. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/internal.h +38 -0
  670. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/jitter.cc.inc +463 -0
  671. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
  672. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hkdf/hkdf.cc.inc +8 -6
  673. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hmac/hmac.cc.inc +19 -16
  674. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/internal.h +41 -15
  675. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/keccak.cc.inc +172 -44
  676. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/fips_known_values.inc +5 -5
  677. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/mldsa.cc.inc +1632 -766
  678. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/fips_known_values.inc +5 -5
  679. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/mlkem.cc.inc +740 -436
  680. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
  681. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/ctrdrbg.cc.inc +240 -53
  682. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/internal.h +41 -26
  683. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/rand.cc.inc +221 -218
  684. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/internal.h +64 -67
  685. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/padding.cc.inc +49 -57
  686. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa.cc.inc +247 -234
  687. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa_impl.cc.inc +392 -692
  688. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/fips.cc.inc +10 -10
  689. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/self_check.cc.inc +479 -449
  690. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/internal.h +34 -11
  691. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +46 -43
  692. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/internal.h +61 -70
  693. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha1.cc.inc +27 -13
  694. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha256.cc.inc +46 -30
  695. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha512.cc.inc +47 -47
  696. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/address.h +98 -73
  697. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.cc.inc +108 -98
  698. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.h +14 -24
  699. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.cc.inc +94 -91
  700. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.h +19 -31
  701. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/params.h +156 -56
  702. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +318 -132
  703. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.cc.inc +234 -81
  704. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.h +20 -34
  705. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.cc.inc +97 -96
  706. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.h +10 -20
  707. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/internal.h +2 -16
  708. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/kdf.cc.inc +26 -26
  709. data/third_party/boringssl-with-bazel/crypto/fuzzer_mode.cc +5 -5
  710. data/third_party/boringssl-with-bazel/crypto/hpke/hpke.cc +461 -97
  711. data/third_party/boringssl-with-bazel/crypto/hrss/hrss.cc +153 -149
  712. data/third_party/boringssl-with-bazel/crypto/hrss/internal.h +9 -13
  713. data/third_party/boringssl-with-bazel/crypto/internal.h +531 -394
  714. data/third_party/boringssl-with-bazel/crypto/kyber/internal.h +117 -12
  715. data/third_party/boringssl-with-bazel/crypto/kyber/kyber.cc +59 -58
  716. data/third_party/boringssl-with-bazel/crypto/lhash/internal.h +38 -37
  717. data/third_party/boringssl-with-bazel/crypto/lhash/lhash.cc +68 -65
  718. data/third_party/boringssl-with-bazel/crypto/md4/md4.cc +19 -6
  719. data/third_party/boringssl-with-bazel/crypto/md5/internal.h +6 -9
  720. data/third_party/boringssl-with-bazel/crypto/md5/md5.cc +18 -6
  721. data/third_party/boringssl-with-bazel/crypto/mem.cc +61 -65
  722. data/third_party/boringssl-with-bazel/crypto/mem_internal.h +671 -0
  723. data/third_party/boringssl-with-bazel/crypto/mldsa/mldsa.cc +238 -32
  724. data/third_party/boringssl-with-bazel/crypto/mlkem/mlkem.cc +21 -65
  725. data/third_party/boringssl-with-bazel/crypto/obj/obj.cc +132 -157
  726. data/third_party/boringssl-with-bazel/crypto/obj/obj_dat.h +79 -1
  727. data/third_party/boringssl-with-bazel/crypto/obj/obj_xref.cc +14 -11
  728. data/third_party/boringssl-with-bazel/crypto/params_internal.h +30 -0
  729. data/third_party/boringssl-with-bazel/crypto/pem/internal.h +20 -15
  730. data/third_party/boringssl-with-bazel/crypto/pem/pem_all.cc +20 -19
  731. data/third_party/boringssl-with-bazel/crypto/pem/pem_info.cc +72 -76
  732. data/third_party/boringssl-with-bazel/crypto/pem/pem_lib.cc +215 -217
  733. data/third_party/boringssl-with-bazel/crypto/pem/pem_oth.cc +6 -6
  734. data/third_party/boringssl-with-bazel/crypto/pem/pem_pk8.cc +13 -13
  735. data/third_party/boringssl-with-bazel/crypto/pem/pem_pkey.cc +11 -11
  736. data/third_party/boringssl-with-bazel/crypto/pkcs7/internal.h +12 -17
  737. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7.cc +29 -27
  738. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7_x509.cc +55 -49
  739. data/third_party/boringssl-with-bazel/crypto/pkcs8/internal.h +21 -26
  740. data/third_party/boringssl-with-bazel/crypto/pkcs8/p5_pbev2.cc +33 -31
  741. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8.cc +73 -81
  742. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8_x509.cc +139 -138
  743. data/third_party/boringssl-with-bazel/crypto/poly1305/internal.h +3 -7
  744. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305.cc +5 -4
  745. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_arm.cc +43 -47
  746. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_vec.cc +29 -26
  747. data/third_party/boringssl-with-bazel/crypto/pool/internal.h +64 -20
  748. data/third_party/boringssl-with-bazel/crypto/pool/pool.cc +177 -157
  749. data/third_party/boringssl-with-bazel/crypto/rand/deterministic.cc +9 -16
  750. data/third_party/boringssl-with-bazel/crypto/rand/fork_detect.cc +70 -42
  751. data/third_party/boringssl-with-bazel/crypto/rand/forkunsafe.cc +7 -7
  752. data/third_party/boringssl-with-bazel/crypto/rand/getentropy.cc +6 -13
  753. data/third_party/boringssl-with-bazel/crypto/rand/internal.h +16 -4
  754. data/third_party/boringssl-with-bazel/crypto/rand/ios.cc +4 -11
  755. data/third_party/boringssl-with-bazel/crypto/rand/rand.cc +11 -9
  756. data/third_party/boringssl-with-bazel/crypto/rand/trusty.cc +4 -11
  757. data/third_party/boringssl-with-bazel/crypto/rand/urandom.cc +16 -195
  758. data/third_party/boringssl-with-bazel/crypto/rand/windows.cc +12 -19
  759. data/third_party/boringssl-with-bazel/crypto/refcount.cc +7 -17
  760. data/third_party/boringssl-with-bazel/crypto/rsa/internal.h +22 -7
  761. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_asn1.cc +199 -78
  762. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_crypt.cc +49 -50
  763. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_extra.cc +11 -0
  764. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_print.cc +4 -6
  765. data/third_party/boringssl-with-bazel/crypto/sha/sha1.cc +3 -0
  766. data/third_party/boringssl-with-bazel/crypto/sha/sha256.cc +3 -1
  767. data/third_party/boringssl-with-bazel/crypto/sha/sha512.cc +6 -4
  768. data/third_party/boringssl-with-bazel/crypto/siphash/siphash.cc +2 -0
  769. data/third_party/boringssl-with-bazel/crypto/slhdsa/slhdsa.cc +43 -6
  770. data/third_party/boringssl-with-bazel/crypto/spake2plus/internal.h +31 -31
  771. data/third_party/boringssl-with-bazel/crypto/spake2plus/spake2plus.cc +1 -1
  772. data/third_party/boringssl-with-bazel/crypto/stack/stack.cc +89 -130
  773. data/third_party/boringssl-with-bazel/crypto/thread.cc +14 -14
  774. data/third_party/boringssl-with-bazel/crypto/thread_none.cc +10 -13
  775. data/third_party/boringssl-with-bazel/crypto/thread_pthread.cc +22 -35
  776. data/third_party/boringssl-with-bazel/crypto/thread_win.cc +29 -40
  777. data/third_party/boringssl-with-bazel/crypto/trust_token/internal.h +81 -88
  778. data/third_party/boringssl-with-bazel/crypto/trust_token/pmbtoken.cc +160 -144
  779. data/third_party/boringssl-with-bazel/crypto/trust_token/trust_token.cc +96 -80
  780. data/third_party/boringssl-with-bazel/crypto/trust_token/voprf.cc +90 -87
  781. data/third_party/boringssl-with-bazel/crypto/x509/a_digest.cc +5 -5
  782. data/third_party/boringssl-with-bazel/crypto/x509/a_sign.cc +51 -48
  783. data/third_party/boringssl-with-bazel/crypto/x509/a_verify.cc +30 -34
  784. data/third_party/boringssl-with-bazel/crypto/x509/algorithm.cc +47 -16
  785. data/third_party/boringssl-with-bazel/crypto/x509/asn1_gen.cc +41 -43
  786. data/third_party/boringssl-with-bazel/crypto/x509/by_dir.cc +183 -237
  787. data/third_party/boringssl-with-bazel/crypto/x509/by_file.cc +29 -30
  788. data/third_party/boringssl-with-bazel/crypto/x509/internal.h +276 -180
  789. data/third_party/boringssl-with-bazel/crypto/x509/name_print.cc +15 -13
  790. data/third_party/boringssl-with-bazel/crypto/x509/policy.cc +415 -525
  791. data/third_party/boringssl-with-bazel/crypto/x509/rsa_pss.cc +94 -271
  792. data/third_party/boringssl-with-bazel/crypto/x509/t_crl.cc +11 -8
  793. data/third_party/boringssl-with-bazel/crypto/x509/t_req.cc +26 -23
  794. data/third_party/boringssl-with-bazel/crypto/x509/t_x509.cc +26 -22
  795. data/third_party/boringssl-with-bazel/crypto/x509/t_x509a.cc +3 -1
  796. data/third_party/boringssl-with-bazel/crypto/x509/v3_akey.cc +69 -76
  797. data/third_party/boringssl-with-bazel/crypto/x509/v3_akeya.cc +2 -2
  798. data/third_party/boringssl-with-bazel/crypto/x509/v3_alt.cc +112 -69
  799. data/third_party/boringssl-with-bazel/crypto/x509/v3_bcons.cc +15 -14
  800. data/third_party/boringssl-with-bazel/crypto/x509/v3_bitst.cc +16 -18
  801. data/third_party/boringssl-with-bazel/crypto/x509/v3_conf.cc +62 -67
  802. data/third_party/boringssl-with-bazel/crypto/x509/v3_cpols.cc +143 -170
  803. data/third_party/boringssl-with-bazel/crypto/x509/v3_crld.cc +121 -165
  804. data/third_party/boringssl-with-bazel/crypto/x509/v3_enum.cc +13 -12
  805. data/third_party/boringssl-with-bazel/crypto/x509/v3_extku.cc +17 -34
  806. data/third_party/boringssl-with-bazel/crypto/x509/v3_genn.cc +20 -10
  807. data/third_party/boringssl-with-bazel/crypto/x509/v3_ia5.cc +22 -18
  808. data/third_party/boringssl-with-bazel/crypto/x509/v3_info.cc +45 -47
  809. data/third_party/boringssl-with-bazel/crypto/x509/v3_int.cc +35 -33
  810. data/third_party/boringssl-with-bazel/crypto/x509/v3_lib.cc +106 -61
  811. data/third_party/boringssl-with-bazel/crypto/x509/v3_ncons.cc +642 -358
  812. data/third_party/boringssl-with-bazel/crypto/x509/v3_ocsp.cc +25 -22
  813. data/third_party/boringssl-with-bazel/crypto/x509/v3_pcons.cc +15 -14
  814. data/third_party/boringssl-with-bazel/crypto/x509/v3_pmaps.cc +16 -15
  815. data/third_party/boringssl-with-bazel/crypto/x509/v3_prn.cc +6 -6
  816. data/third_party/boringssl-with-bazel/crypto/x509/v3_purp.cc +150 -137
  817. data/third_party/boringssl-with-bazel/crypto/x509/v3_skey.cc +23 -26
  818. data/third_party/boringssl-with-bazel/crypto/x509/v3_utl.cc +151 -178
  819. data/third_party/boringssl-with-bazel/crypto/x509/x509.cc +1 -1
  820. data/third_party/boringssl-with-bazel/crypto/x509/x509_att.cc +32 -30
  821. data/third_party/boringssl-with-bazel/crypto/x509/x509_cmp.cc +95 -88
  822. data/third_party/boringssl-with-bazel/crypto/x509/x509_d2.cc +9 -9
  823. data/third_party/boringssl-with-bazel/crypto/x509/x509_def.cc +6 -8
  824. data/third_party/boringssl-with-bazel/crypto/x509/x509_ext.cc +46 -24
  825. data/third_party/boringssl-with-bazel/crypto/x509/x509_lu.cc +211 -195
  826. data/third_party/boringssl-with-bazel/crypto/x509/x509_obj.cc +20 -16
  827. data/third_party/boringssl-with-bazel/crypto/x509/x509_req.cc +37 -46
  828. data/third_party/boringssl-with-bazel/crypto/x509/x509_set.cc +62 -90
  829. data/third_party/boringssl-with-bazel/crypto/x509/x509_trs.cc +18 -13
  830. data/third_party/boringssl-with-bazel/crypto/x509/x509_v3.cc +33 -33
  831. data/third_party/boringssl-with-bazel/crypto/x509/x509_vfy.cc +109 -110
  832. data/third_party/boringssl-with-bazel/crypto/x509/x509_vpm.cc +56 -47
  833. data/third_party/boringssl-with-bazel/crypto/x509/x509cset.cc +27 -40
  834. data/third_party/boringssl-with-bazel/crypto/x509/x509name.cc +77 -67
  835. data/third_party/boringssl-with-bazel/crypto/x509/x509rset.cc +5 -17
  836. data/third_party/boringssl-with-bazel/crypto/x509/x509spki.cc +13 -13
  837. data/third_party/boringssl-with-bazel/crypto/x509/x_algor.cc +131 -24
  838. data/third_party/boringssl-with-bazel/crypto/x509/x_all.cc +72 -39
  839. data/third_party/boringssl-with-bazel/crypto/x509/x_attrib.cc +10 -4
  840. data/third_party/boringssl-with-bazel/crypto/x509/x_crl.cc +77 -44
  841. data/third_party/boringssl-with-bazel/crypto/x509/x_exten.cc +6 -0
  842. data/third_party/boringssl-with-bazel/crypto/x509/x_name.cc +311 -383
  843. data/third_party/boringssl-with-bazel/crypto/x509/x_pubkey.cc +129 -82
  844. data/third_party/boringssl-with-bazel/crypto/x509/x_req.cc +11 -6
  845. data/third_party/boringssl-with-bazel/crypto/x509/x_sig.cc +4 -4
  846. data/third_party/boringssl-with-bazel/crypto/x509/x_spki.cc +11 -1
  847. data/third_party/boringssl-with-bazel/crypto/x509/x_x509.cc +285 -280
  848. data/third_party/boringssl-with-bazel/crypto/x509/x_x509a.cc +60 -60
  849. data/third_party/boringssl-with-bazel/crypto/xwing/xwing.cc +257 -0
  850. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +301 -0
  851. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +301 -0
  852. data/third_party/boringssl-with-bazel/gen/crypto/err_data.cc +526 -500
  853. data/third_party/boringssl-with-bazel/include/openssl/aead.h +286 -114
  854. data/third_party/boringssl-with-bazel/include/openssl/aes.h +43 -43
  855. data/third_party/boringssl-with-bazel/include/openssl/asm_base.h +29 -16
  856. data/third_party/boringssl-with-bazel/include/openssl/asn1.h +641 -631
  857. data/third_party/boringssl-with-bazel/include/openssl/asn1t.h +7 -9
  858. data/third_party/boringssl-with-bazel/include/openssl/base.h +34 -54
  859. data/third_party/boringssl-with-bazel/include/openssl/base64.h +30 -30
  860. data/third_party/boringssl-with-bazel/include/openssl/bio.h +373 -316
  861. data/third_party/boringssl-with-bazel/include/openssl/blake2.h +15 -11
  862. data/third_party/boringssl-with-bazel/include/openssl/blowfish.h +10 -3
  863. data/third_party/boringssl-with-bazel/include/openssl/bn.h +298 -306
  864. data/third_party/boringssl-with-bazel/include/openssl/buf.h +14 -14
  865. data/third_party/boringssl-with-bazel/include/openssl/bytestring.h +272 -207
  866. data/third_party/boringssl-with-bazel/include/openssl/cast.h +45 -8
  867. data/third_party/boringssl-with-bazel/include/openssl/chacha.h +3 -3
  868. data/third_party/boringssl-with-bazel/include/openssl/cipher.h +334 -152
  869. data/third_party/boringssl-with-bazel/include/openssl/cmac.h +13 -13
  870. data/third_party/boringssl-with-bazel/include/openssl/cms.h +35 -34
  871. data/third_party/boringssl-with-bazel/include/openssl/conf.h +15 -14
  872. data/third_party/boringssl-with-bazel/include/openssl/crypto.h +15 -13
  873. data/third_party/boringssl-with-bazel/include/openssl/ctrdrbg.h +49 -15
  874. data/third_party/boringssl-with-bazel/include/openssl/curve25519.h +24 -24
  875. data/third_party/boringssl-with-bazel/include/openssl/des.h +22 -16
  876. data/third_party/boringssl-with-bazel/include/openssl/dh.h +95 -95
  877. data/third_party/boringssl-with-bazel/include/openssl/digest.h +140 -71
  878. data/third_party/boringssl-with-bazel/include/openssl/dsa.h +101 -101
  879. data/third_party/boringssl-with-bazel/include/openssl/ec.h +143 -119
  880. data/third_party/boringssl-with-bazel/include/openssl/ec_key.h +97 -97
  881. data/third_party/boringssl-with-bazel/include/openssl/ecdh.h +9 -9
  882. data/third_party/boringssl-with-bazel/include/openssl/ecdsa.h +89 -46
  883. data/third_party/boringssl-with-bazel/include/openssl/engine.h +5 -5
  884. data/third_party/boringssl-with-bazel/include/openssl/err.h +73 -71
  885. data/third_party/boringssl-with-bazel/include/openssl/evp.h +824 -344
  886. data/third_party/boringssl-with-bazel/include/openssl/evp_errors.h +9 -2
  887. data/third_party/boringssl-with-bazel/include/openssl/ex_data.h +27 -32
  888. data/third_party/boringssl-with-bazel/include/openssl/hkdf.h +6 -6
  889. data/third_party/boringssl-with-bazel/include/openssl/hmac.h +31 -31
  890. data/third_party/boringssl-with-bazel/include/openssl/hpke.h +133 -117
  891. data/third_party/boringssl-with-bazel/include/openssl/hrss.h +14 -8
  892. data/third_party/boringssl-with-bazel/include/openssl/kdf.h +20 -19
  893. data/third_party/boringssl-with-bazel/include/openssl/lhash.h +4 -25
  894. data/third_party/boringssl-with-bazel/include/openssl/md4.h +14 -7
  895. data/third_party/boringssl-with-bazel/include/openssl/md5.h +7 -7
  896. data/third_party/boringssl-with-bazel/include/openssl/mem.h +38 -38
  897. data/third_party/boringssl-with-bazel/include/openssl/mldsa.h +380 -24
  898. data/third_party/boringssl-with-bazel/include/openssl/mlkem.h +43 -43
  899. data/third_party/boringssl-with-bazel/include/openssl/nid.h +1297 -2
  900. data/third_party/boringssl-with-bazel/include/openssl/obj.h +49 -49
  901. data/third_party/boringssl-with-bazel/include/openssl/opensslconf.h +30 -0
  902. data/third_party/boringssl-with-bazel/include/openssl/params.h +42 -0
  903. data/third_party/boringssl-with-bazel/include/openssl/pem.h +39 -30
  904. data/third_party/boringssl-with-bazel/include/openssl/pkcs7.h +40 -40
  905. data/third_party/boringssl-with-bazel/include/openssl/pkcs8.h +69 -63
  906. data/third_party/boringssl-with-bazel/include/openssl/poly1305.h +8 -5
  907. data/third_party/boringssl-with-bazel/include/openssl/pool.h +54 -25
  908. data/third_party/boringssl-with-bazel/include/openssl/posix_time.h +6 -6
  909. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols.h +7866 -0
  910. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_S.h +585 -0
  911. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_c.h +305 -0
  912. data/third_party/boringssl-with-bazel/include/openssl/rand.h +18 -18
  913. data/third_party/boringssl-with-bazel/include/openssl/rc4.h +4 -4
  914. data/third_party/boringssl-with-bazel/include/openssl/ripemd.h +15 -10
  915. data/third_party/boringssl-with-bazel/include/openssl/rsa.h +272 -235
  916. data/third_party/boringssl-with-bazel/include/openssl/service_indicator.h +4 -81
  917. data/third_party/boringssl-with-bazel/include/openssl/sha.h +43 -166
  918. data/third_party/boringssl-with-bazel/include/openssl/sha2.h +201 -0
  919. data/third_party/boringssl-with-bazel/include/openssl/slhdsa.h +100 -48
  920. data/third_party/boringssl-with-bazel/include/openssl/span.h +190 -75
  921. data/third_party/boringssl-with-bazel/include/openssl/ssl.h +2168 -1567
  922. data/third_party/boringssl-with-bazel/include/openssl/ssl3.h +11 -69
  923. data/third_party/boringssl-with-bazel/include/openssl/stack.h +135 -80
  924. data/third_party/boringssl-with-bazel/include/openssl/target.h +13 -1
  925. data/third_party/boringssl-with-bazel/include/openssl/thread.h +0 -10
  926. data/third_party/boringssl-with-bazel/include/openssl/tls1.h +31 -310
  927. data/third_party/boringssl-with-bazel/include/openssl/tls_prf.h +47 -0
  928. data/third_party/boringssl-with-bazel/include/openssl/trust_token.h +97 -92
  929. data/third_party/boringssl-with-bazel/include/openssl/type_check.h +1 -1
  930. data/third_party/boringssl-with-bazel/include/openssl/x509.h +1805 -1857
  931. data/third_party/boringssl-with-bazel/include/openssl/x509v3.h +1 -1
  932. data/third_party/boringssl-with-bazel/include/openssl/xwing.h +115 -0
  933. data/third_party/boringssl-with-bazel/ssl/bio_ssl.cc +24 -19
  934. data/third_party/boringssl-with-bazel/ssl/d1_both.cc +59 -57
  935. data/third_party/boringssl-with-bazel/ssl/d1_lib.cc +53 -42
  936. data/third_party/boringssl-with-bazel/ssl/d1_pkt.cc +4 -4
  937. data/third_party/boringssl-with-bazel/ssl/d1_srtp.cc +2 -2
  938. data/third_party/boringssl-with-bazel/ssl/dtls_method.cc +10 -10
  939. data/third_party/boringssl-with-bazel/ssl/dtls_record.cc +6 -6
  940. data/third_party/boringssl-with-bazel/ssl/encrypted_client_hello.cc +61 -71
  941. data/third_party/boringssl-with-bazel/ssl/extensions.cc +967 -366
  942. data/third_party/boringssl-with-bazel/ssl/handoff.cc +77 -38
  943. data/third_party/boringssl-with-bazel/ssl/handshake.cc +63 -30
  944. data/third_party/boringssl-with-bazel/ssl/handshake_client.cc +129 -85
  945. data/third_party/boringssl-with-bazel/ssl/handshake_server.cc +116 -68
  946. data/third_party/boringssl-with-bazel/ssl/internal.h +983 -1207
  947. data/third_party/boringssl-with-bazel/ssl/s3_both.cc +34 -29
  948. data/third_party/boringssl-with-bazel/ssl/s3_lib.cc +4 -3
  949. data/third_party/boringssl-with-bazel/ssl/s3_pkt.cc +12 -12
  950. data/third_party/boringssl-with-bazel/ssl/ssl_aead_ctx.cc +5 -5
  951. data/third_party/boringssl-with-bazel/ssl/ssl_asn1.cc +114 -59
  952. data/third_party/boringssl-with-bazel/ssl/ssl_buffer.cc +17 -18
  953. data/third_party/boringssl-with-bazel/ssl/ssl_cert.cc +99 -61
  954. data/third_party/boringssl-with-bazel/ssl/ssl_cipher.cc +143 -134
  955. data/third_party/boringssl-with-bazel/ssl/ssl_credential.cc +188 -90
  956. data/third_party/boringssl-with-bazel/ssl/ssl_file.cc +132 -225
  957. data/third_party/boringssl-with-bazel/ssl/ssl_key_share.cc +79 -7
  958. data/third_party/boringssl-with-bazel/ssl/ssl_lib.cc +698 -302
  959. data/third_party/boringssl-with-bazel/ssl/ssl_privkey.cc +102 -45
  960. data/third_party/boringssl-with-bazel/ssl/ssl_session.cc +117 -102
  961. data/third_party/boringssl-with-bazel/ssl/ssl_transcript.cc +3 -3
  962. data/third_party/boringssl-with-bazel/ssl/ssl_versions.cc +24 -24
  963. data/third_party/boringssl-with-bazel/ssl/ssl_x509.cc +184 -170
  964. data/third_party/boringssl-with-bazel/ssl/t1_enc.cc +12 -10
  965. data/third_party/boringssl-with-bazel/ssl/tls13_both.cc +86 -54
  966. data/third_party/boringssl-with-bazel/ssl/tls13_client.cc +176 -90
  967. data/third_party/boringssl-with-bazel/ssl/tls13_enc.cc +166 -112
  968. data/third_party/boringssl-with-bazel/ssl/tls13_server.cc +188 -97
  969. data/third_party/boringssl-with-bazel/ssl/tls_method.cc +23 -23
  970. data/third_party/boringssl-with-bazel/ssl/tls_record.cc +17 -14
  971. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
  972. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
  973. data/third_party/boringssl-with-bazel/third_party/fiat/curve25519_64_adx.h +37 -33
  974. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64.h +4 -93
  975. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64_msvc.h +4 -69
  976. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_32.br.c.inc +71 -0
  977. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_64.br.c.inc +84 -0
  978. data/third_party/boringssl-with-bazel/third_party/fiat/p256_point.br.c.inc +166 -0
  979. metadata +77 -52
  980. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +0 -240
  981. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +0 -56
  982. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +0 -157
  983. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +0 -72
  984. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +0 -181
  985. data/third_party/abseil-cpp/absl/base/internal/identity.h +0 -39
  986. data/third_party/abseil-cpp/absl/base/internal/nullability_deprecated.h +0 -106
  987. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -105
  988. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -50
  989. data/third_party/abseil-cpp/absl/strings/string_view.cc +0 -257
  990. data/third_party/boringssl-with-bazel/crypto/evp/p_dh_asn1.cc +0 -142
  991. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa_asn1.cc +0 -279
  992. data/third_party/boringssl-with-bazel/crypto/evp/p_ec_asn1.cc +0 -286
  993. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519_asn1.cc +0 -225
  994. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa_asn1.cc +0 -198
  995. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519_asn1.cc +0 -237
  996. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p224-64.cc.inc +0 -1163
  997. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.cc.inc +0 -741
  998. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.h +0 -207
  999. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/blinding.cc.inc +0 -147
  1000. data/third_party/boringssl-with-bazel/crypto/rand/getrandom_fillin.h +0 -64
  1001. data/third_party/boringssl-with-bazel/crypto/rand/passive.cc +0 -178
  1002. data/third_party/boringssl-with-bazel/crypto/x509/ext_dat.h +0 -92
  1003. data/third_party/boringssl-with-bazel/include/openssl/bcm_public.h +0 -82
  1004. data/third_party/boringssl-with-bazel/include/openssl/experimental/kyber.h +0 -146
@@ -15,9 +15,11 @@
15
15
  #ifndef OPENSSL_HEADER_CRYPTO_FIPSMODULE_BCM_INTERFACE_H
16
16
  #define OPENSSL_HEADER_CRYPTO_FIPSMODULE_BCM_INTERFACE_H
17
17
 
18
- // For the moment, we reach out for AES_KEY.
19
18
  #include <openssl/aes.h>
20
- #include <openssl/bcm_public.h>
19
+ #include <openssl/mldsa.h>
20
+ #include <openssl/mlkem.h>
21
+ #include <openssl/sha.h>
22
+ #include <openssl/sha2.h>
21
23
 
22
24
 
23
25
  // This header will eventually become the interface between BCM and the
@@ -28,9 +30,7 @@
28
30
  // Over time, calls from libcrypto to BCM will all move to this header
29
31
  // and the separation will become more meaningful.
30
32
 
31
- #if defined(__cplusplus)
32
- extern "C" {
33
- #endif
33
+ BSSL_NAMESPACE_BEGIN
34
34
 
35
35
  // Enumerated types for return values from bcm functions, both infallible
36
36
  // and fallible functions. Two success values are used to correspond to the
@@ -73,111 +73,95 @@ inline bcm_status_t bcm_as_not_approved_status(int result) {
73
73
 
74
74
  #endif // BORINGSSL_FIPS
75
75
 
76
- // BCM_rand_load_entropy supplies |entropy_len| bytes of entropy to the BCM
77
- // module. The |want_additional_input| parameter is true iff the entropy was
78
- // obtained from a source other than the system, e.g. directly from the CPU.
79
- bcm_infallible BCM_rand_load_entropy(const uint8_t *entropy, size_t entropy_len,
80
- int want_additional_input);
81
-
82
- // BCM_rand_bytes is the same as the public |RAND_bytes| function, other
76
+ // BCM_rand_bytes is the same as the public `RAND_bytes` function, other
83
77
  // than returning a bcm_infallible status indicator.
84
- OPENSSL_EXPORT bcm_infallible BCM_rand_bytes(uint8_t *out, size_t out_len);
78
+ bcm_infallible BCM_rand_bytes(uint8_t *out, size_t out_len);
85
79
 
86
- // BCM_rand_bytes_hwrng attempts to fill |out| with |len| bytes of entropy from
80
+ // BCM_rand_bytes_hwrng attempts to fill `out` with `len` bytes of entropy from
87
81
  // the CPU hardware random number generator if one is present.
88
82
  // bcm_status_approved is returned on success, and a failure status is
89
83
  // returned otherwise.
90
84
  bcm_status BCM_rand_bytes_hwrng(uint8_t *out, size_t len);
91
85
 
92
86
  // BCM_rand_bytes_with_additional_data samples from the RNG after mixing 32
93
- // bytes from |user_additional_data| in.
87
+ // bytes from `user_additional_data` in.
94
88
  bcm_infallible BCM_rand_bytes_with_additional_data(
95
89
  uint8_t *out, size_t out_len, const uint8_t user_additional_data[32]);
96
90
 
97
91
 
98
92
  // SHA-1
99
93
 
100
- // BCM_SHA_DIGEST_LENGTH is the length of a SHA-1 digest.
101
- #define BCM_SHA_DIGEST_LENGTH 20
102
-
103
- // BCM_sha1_init initialises |sha|.
94
+ // BCM_sha1_init initialises `sha`.
104
95
  bcm_infallible BCM_sha1_init(SHA_CTX *sha);
105
96
 
106
- // BCM_SHA1_transform is a low-level function that performs a single, SHA-1
107
- // block transformation using the state from |sha| and |SHA_CBLOCK| bytes from
108
- // |block|.
109
- bcm_infallible BCM_sha1_transform(SHA_CTX *c,
110
- const uint8_t data[BCM_SHA_CBLOCK]);
97
+ // SHA1_transform is a low-level function that performs a single, SHA-1
98
+ // block transformation using the state from `sha` and `SHA_CBLOCK` bytes from
99
+ // `block`.
100
+ bcm_infallible BCM_sha1_transform(SHA_CTX *c, const uint8_t data[SHA_CBLOCK]);
111
101
 
112
- // BCM_sha1_update adds |len| bytes from |data| to |sha|.
102
+ // BCM_sha1_update adds `len` bytes from `data` to `sha`.
113
103
  bcm_infallible BCM_sha1_update(SHA_CTX *c, const void *data, size_t len);
114
104
 
115
- // BCM_sha1_final adds the final padding to |sha| and writes the resulting
116
- // digest to |out|, which must have at least |SHA_DIGEST_LENGTH| bytes of space.
117
- bcm_infallible BCM_sha1_final(uint8_t out[BCM_SHA_DIGEST_LENGTH], SHA_CTX *c);
105
+ // BCM_sha1_final adds the final padding to `sha` and writes the resulting
106
+ // digest to `out`, which must have at least `SHA_DIGEST_LENGTH` bytes of space.
107
+ bcm_infallible BCM_sha1_final(uint8_t out[SHA_DIGEST_LENGTH], SHA_CTX *c);
118
108
 
119
109
 
120
- // BCM_fips_186_2_prf derives |out_len| bytes from |xkey| using the PRF
110
+ // BCM_fips_186_2_prf derives `out_len` bytes from `xkey` using the PRF
121
111
  // defined in FIPS 186-2, Appendix 3.1, with change notice 1 applied. The b
122
112
  // parameter is 160 and seed, XKEY, is also 160 bits. The optional XSEED user
123
113
  // input is all zeros.
124
114
  //
125
115
  // The PRF generates a sequence of 320-bit numbers. Each number is encoded as a
126
- // 40-byte string in big-endian and then concatenated to form |out|. If
127
- // |out_len| is not a multiple of 40, the result is truncated. This matches the
116
+ // 40-byte string in big-endian and then concatenated to form `out`. If
117
+ // `out_len` is not a multiple of 40, the result is truncated. This matches the
128
118
  // construction used in Section 7 of RFC 4186 and Section 7 of RFC 4187.
129
119
  //
130
120
  // This PRF is based on SHA-1, a weak hash function, and should not be used
131
121
  // in new protocols. It is provided for compatibility with some legacy EAP
132
122
  // methods.
133
123
  bcm_infallible BCM_fips_186_2_prf(uint8_t *out, size_t out_len,
134
- const uint8_t xkey[BCM_SHA_DIGEST_LENGTH]);
124
+ const uint8_t xkey[SHA_DIGEST_LENGTH]);
135
125
 
136
126
 
137
127
  // SHA-224
138
128
 
139
- // SHA224_DIGEST_LENGTH is the length of a SHA-224 digest.
140
- #define BCM_SHA224_DIGEST_LENGTH 28
141
-
142
- // BCM_sha224_unit initialises |sha|.
129
+ // BCM_sha224_unit initialises `sha`.
143
130
  bcm_infallible BCM_sha224_init(SHA256_CTX *sha);
144
131
 
145
- // BCM_sha224_update adds |len| bytes from |data| to |sha|.
132
+ // BCM_sha224_update adds `len` bytes from `data` to `sha`.
146
133
  bcm_infallible BCM_sha224_update(SHA256_CTX *sha, const void *data, size_t len);
147
134
 
148
- // BCM_sha224_final adds the final padding to |sha| and writes the resulting
149
- // digest to |out|, which must have at least |SHA224_DIGEST_LENGTH| bytes of
135
+ // BCM_sha224_final adds the final padding to `sha` and writes the resulting
136
+ // digest to `out`, which must have at least `SHA224_DIGEST_LENGTH` bytes of
150
137
  // space. It aborts on programmer error.
151
- bcm_infallible BCM_sha224_final(uint8_t out[BCM_SHA224_DIGEST_LENGTH],
138
+ bcm_infallible BCM_sha224_final(uint8_t out[SHA224_DIGEST_LENGTH],
152
139
  SHA256_CTX *sha);
153
140
 
154
141
 
155
142
  // SHA-256
156
143
 
157
- // BCM_SHA256_DIGEST_LENGTH is the length of a SHA-256 digest.
158
- #define BCM_SHA256_DIGEST_LENGTH 32
159
-
160
- // BCM_sha256_init initialises |sha|.
144
+ // BCM_sha256_init initialises `sha`.
161
145
  bcm_infallible BCM_sha256_init(SHA256_CTX *sha);
162
146
 
163
- // BCM_sha256_update adds |len| bytes from |data| to |sha|.
147
+ // BCM_sha256_update adds `len` bytes from `data` to `sha`.
164
148
  bcm_infallible BCM_sha256_update(SHA256_CTX *sha, const void *data, size_t len);
165
149
 
166
- // BCM_sha256_final adds the final padding to |sha| and writes the resulting
167
- // digest to |out|, which must have at least |BCM_SHA256_DIGEST_LENGTH| bytes of
150
+ // BCM_sha256_final adds the final padding to `sha` and writes the resulting
151
+ // digest to `out`, which must have at least `SHA256_DIGEST_LENGTH` bytes of
168
152
  // space. It aborts on programmer error.
169
- bcm_infallible BCM_sha256_final(uint8_t out[BCM_SHA256_DIGEST_LENGTH],
153
+ bcm_infallible BCM_sha256_final(uint8_t out[SHA256_DIGEST_LENGTH],
170
154
  SHA256_CTX *sha);
171
155
 
172
156
  // BCM_sha256_transform is a low-level function that performs a single, SHA-256
173
- // block transformation using the state from |sha| and |BCM_SHA256_CBLOCK| bytes
174
- // from |block|.
157
+ // block transformation using the state from `sha` and `SHA256_CBLOCK` bytes
158
+ // from `block`.
175
159
  bcm_infallible BCM_sha256_transform(SHA256_CTX *sha,
176
- const uint8_t block[BCM_SHA256_CBLOCK]);
160
+ const uint8_t block[SHA256_CBLOCK]);
177
161
 
178
- // BCM_sha256_transform_blocks is a low-level function that takes |num_blocks| *
179
- // |BCM_SHA256_CBLOCK| bytes of data and performs SHA-256 transforms on it to
180
- // update |state|.
162
+ // BCM_sha256_transform_blocks is a low-level function that takes `num_blocks` *
163
+ // `SHA256_CBLOCK` bytes of data and performs SHA-256 transforms on it to update
164
+ // `state`.
181
165
  bcm_infallible BCM_sha256_transform_blocks(uint32_t state[8],
182
166
  const uint8_t *data,
183
167
  size_t num_blocks);
@@ -185,63 +169,55 @@ bcm_infallible BCM_sha256_transform_blocks(uint32_t state[8],
185
169
 
186
170
  // SHA-384.
187
171
 
188
- // BCM_SHA384_DIGEST_LENGTH is the length of a SHA-384 digest.
189
- #define BCM_SHA384_DIGEST_LENGTH 48
190
-
191
- // BCM_sha384_init initialises |sha|.
172
+ // BCM_sha384_init initialises `sha`.
192
173
  bcm_infallible BCM_sha384_init(SHA512_CTX *sha);
193
174
 
194
- // BCM_sha384_update adds |len| bytes from |data| to |sha|.
175
+ // BCM_sha384_update adds `len` bytes from `data` to `sha`.
195
176
  bcm_infallible BCM_sha384_update(SHA512_CTX *sha, const void *data, size_t len);
196
177
 
197
- // BCM_sha384_final adds the final padding to |sha| and writes the resulting
198
- // digest to |out|, which must have at least |BCM_sha384_DIGEST_LENGTH| bytes of
178
+ // BCM_sha384_final adds the final padding to `sha` and writes the resulting
179
+ // digest to `out`, which must have at least `SHA384_DIGEST_LENGTH` bytes of
199
180
  // space. It may abort on programmer error.
200
- bcm_infallible BCM_sha384_final(uint8_t out[BCM_SHA384_DIGEST_LENGTH],
181
+ bcm_infallible BCM_sha384_final(uint8_t out[SHA384_DIGEST_LENGTH],
201
182
  SHA512_CTX *sha);
202
183
 
203
184
 
204
185
  // SHA-512.
205
186
 
206
- // BCM_SHA512_DIGEST_LENGTH is the length of a SHA-512 digest.
207
- #define BCM_SHA512_DIGEST_LENGTH 64
208
-
209
- // BCM_sha512_init initialises |sha|.
187
+ // BCM_sha512_init initialises `sha`.
210
188
  bcm_infallible BCM_sha512_init(SHA512_CTX *sha);
211
189
 
212
- // BCM_sha512_update adds |len| bytes from |data| to |sha|.
190
+ // BCM_sha512_update adds `len` bytes from `data` to `sha`.
213
191
  bcm_infallible BCM_sha512_update(SHA512_CTX *sha, const void *data, size_t len);
214
192
 
215
- // BCM_sha512_final adds the final padding to |sha| and writes the resulting
216
- // digest to |out|, which must have at least |BCM_sha512_DIGEST_LENGTH| bytes of
193
+ // BCM_sha512_final adds the final padding to `sha` and writes the resulting
194
+ // digest to `out`, which must have at least `SHA512_DIGEST_LENGTH` bytes of
217
195
  // space.
218
- bcm_infallible BCM_sha512_final(uint8_t out[BCM_SHA512_DIGEST_LENGTH],
196
+ bcm_infallible BCM_sha512_final(uint8_t out[SHA512_DIGEST_LENGTH],
219
197
  SHA512_CTX *sha);
220
198
 
221
199
  // BCM_sha512_transform is a low-level function that performs a single, SHA-512
222
- // block transformation using the state from |sha| and |BCM_sha512_CBLOCK| bytes
223
- // from |block|.
200
+ // block transformation using the state from `sha` and `SHA512_CBLOCK` bytes
201
+ // from `block`.
224
202
  bcm_infallible BCM_sha512_transform(SHA512_CTX *sha,
225
- const uint8_t block[BCM_SHA512_CBLOCK]);
203
+ const uint8_t block[SHA512_CBLOCK]);
226
204
 
227
205
 
228
206
  // SHA-512-256
229
207
  //
230
208
  // See https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf section 5.3.6
231
209
 
232
- #define BCM_SHA512_256_DIGEST_LENGTH 32
233
-
234
- // BCM_sha512_256_init initialises |sha|.
210
+ // BCM_sha512_256_init initialises `sha`.
235
211
  bcm_infallible BCM_sha512_256_init(SHA512_CTX *sha);
236
212
 
237
- // BCM_sha512_256_update adds |len| bytes from |data| to |sha|.
213
+ // BCM_sha512_256_update adds `len` bytes from `data` to `sha`.
238
214
  bcm_infallible BCM_sha512_256_update(SHA512_CTX *sha, const void *data,
239
215
  size_t len);
240
216
 
241
- // BCM_sha512_256_final adds the final padding to |sha| and writes the resulting
242
- // digest to |out|, which must have at least |BCM_sha512_256_DIGEST_LENGTH|
243
- // bytes of space. It may abort on programmer error.
244
- bcm_infallible BCM_sha512_256_final(uint8_t out[BCM_SHA512_256_DIGEST_LENGTH],
217
+ // BCM_sha512_256_final adds the final padding to `sha` and writes the resulting
218
+ // digest to `out`, which must have at least `SHA512_256_DIGEST_LENGTH` bytes of
219
+ // space. It may abort on programmer error.
220
+ bcm_infallible BCM_sha512_256_final(uint8_t out[SHA512_256_DIGEST_LENGTH],
245
221
  SHA512_CTX *sha);
246
222
 
247
223
 
@@ -254,227 +230,357 @@ bcm_infallible BCM_sha512_256_final(uint8_t out[BCM_SHA512_256_DIGEST_LENGTH],
254
230
  // random entropy necessary to generate a signature in randomized mode.
255
231
  #define BCM_MLDSA_SIGNATURE_RANDOMIZER_BYTES 32
256
232
 
257
- // BCM_MLDSA_SEED_BYTES is the number of bytes in an ML-DSA seed value.
258
- #define BCM_MLDSA_SEED_BYTES 32
259
-
260
233
  // BCM_MLDSA65_PRIVATE_KEY_BYTES is the number of bytes in an encoded ML-DSA-65
261
234
  // private key.
262
235
  #define BCM_MLDSA65_PRIVATE_KEY_BYTES 4032
263
236
 
264
- // BCM_MLDSA65_PUBLIC_KEY_BYTES is the number of bytes in an encoded ML-DSA-65
265
- // public key.
266
- #define BCM_MLDSA65_PUBLIC_KEY_BYTES 1952
267
-
268
- // BCM_MLDSA65_SIGNATURE_BYTES is the number of bytes in an encoded ML-DSA-65
269
- // signature.
270
- #define BCM_MLDSA65_SIGNATURE_BYTES 3309
271
-
272
- struct BCM_mldsa65_private_key {
273
- union {
274
- uint8_t bytes[32 + 32 + 64 + 256 * 4 * (5 + 6 + 6)];
275
- uint32_t alignment;
276
- } opaque;
277
- };
278
-
279
- struct BCM_mldsa65_public_key {
280
- union {
281
- uint8_t bytes[32 + 64 + 256 * 4 * 6];
282
- uint32_t alignment;
283
- } opaque;
284
- };
285
-
286
237
  OPENSSL_EXPORT bcm_status BCM_mldsa65_generate_key(
287
- uint8_t out_encoded_public_key[BCM_MLDSA65_PUBLIC_KEY_BYTES],
288
- uint8_t out_seed[BCM_MLDSA_SEED_BYTES],
289
- struct BCM_mldsa65_private_key *out_private_key);
238
+ uint8_t out_encoded_public_key[MLDSA65_PUBLIC_KEY_BYTES],
239
+ uint8_t out_seed[MLDSA_SEED_BYTES], MLDSA65_private_key *out_private_key);
290
240
 
291
241
  OPENSSL_EXPORT bcm_status BCM_mldsa65_private_key_from_seed(
292
- struct BCM_mldsa65_private_key *out_private_key,
293
- const uint8_t seed[BCM_MLDSA_SEED_BYTES]);
242
+ MLDSA65_private_key *out_private_key, const uint8_t seed[MLDSA_SEED_BYTES]);
294
243
 
295
244
  OPENSSL_EXPORT bcm_status BCM_mldsa65_public_from_private(
296
- struct BCM_mldsa65_public_key *out_public_key,
297
- const struct BCM_mldsa65_private_key *private_key);
245
+ MLDSA65_public_key *out_public_key, const MLDSA65_private_key *private_key);
246
+
247
+ // BCM_mldsa65_public_of_private returns the public half of `private_key`.
248
+ const MLDSA65_public_key *BCM_mldsa65_public_of_private(
249
+ const MLDSA65_private_key *private_key);
298
250
 
299
251
  OPENSSL_EXPORT bcm_status
300
- BCM_mldsa65_check_key_fips(struct BCM_mldsa65_private_key *private_key);
252
+ BCM_mldsa65_check_key_fips(MLDSA65_private_key *private_key);
301
253
 
302
254
  OPENSSL_EXPORT bcm_status BCM_mldsa65_generate_key_fips(
303
- uint8_t out_encoded_public_key[BCM_MLDSA65_PUBLIC_KEY_BYTES],
304
- uint8_t out_seed[BCM_MLDSA_SEED_BYTES],
305
- struct BCM_mldsa65_private_key *out_private_key);
255
+ uint8_t out_encoded_public_key[MLDSA65_PUBLIC_KEY_BYTES],
256
+ uint8_t out_seed[MLDSA_SEED_BYTES], MLDSA65_private_key *out_private_key);
306
257
 
307
258
  OPENSSL_EXPORT bcm_status BCM_mldsa65_private_key_from_seed_fips(
308
- struct BCM_mldsa65_private_key *out_private_key,
309
- const uint8_t seed[BCM_MLDSA_SEED_BYTES]);
259
+ MLDSA65_private_key *out_private_key, const uint8_t seed[MLDSA_SEED_BYTES]);
310
260
 
311
- OPENSSL_EXPORT bcm_status BCM_mldsa65_sign(
312
- uint8_t out_encoded_signature[BCM_MLDSA65_SIGNATURE_BYTES],
313
- const struct BCM_mldsa65_private_key *private_key, const uint8_t *msg,
314
- size_t msg_len, const uint8_t *context, size_t context_len);
261
+ OPENSSL_EXPORT bcm_status
262
+ BCM_mldsa65_sign(uint8_t out_encoded_signature[MLDSA65_SIGNATURE_BYTES],
263
+ const MLDSA65_private_key *private_key, const uint8_t *msg,
264
+ size_t msg_len, const uint8_t *context, size_t context_len);
315
265
 
316
266
  OPENSSL_EXPORT bcm_status BCM_mldsa65_verify(
317
- const struct BCM_mldsa65_public_key *public_key,
318
- const uint8_t signature[BCM_MLDSA65_SIGNATURE_BYTES], const uint8_t *msg,
267
+ const MLDSA65_public_key *public_key,
268
+ const uint8_t signature[MLDSA65_SIGNATURE_BYTES], const uint8_t *msg,
319
269
  size_t msg_len, const uint8_t *context, size_t context_len);
320
270
 
321
- OPENSSL_EXPORT bcm_status BCM_mldsa65_marshal_public_key(
322
- CBB *out, const struct BCM_mldsa65_public_key *public_key);
271
+ OPENSSL_EXPORT void BCM_mldsa65_prehash_init(
272
+ MLDSA65_prehash *out_prehash_ctx, const MLDSA65_public_key *public_key,
273
+ const uint8_t *context, size_t context_len);
323
274
 
324
- OPENSSL_EXPORT bcm_status BCM_mldsa65_parse_public_key(
325
- struct BCM_mldsa65_public_key *public_key, CBS *in);
275
+ OPENSSL_EXPORT void BCM_mldsa65_prehash_update(
276
+ MLDSA65_prehash *inout_prehash_ctx, const uint8_t *msg, size_t msg_len);
326
277
 
327
- OPENSSL_EXPORT bcm_status BCM_mldsa65_parse_private_key(
328
- struct BCM_mldsa65_private_key *private_key, CBS *in);
278
+ OPENSSL_EXPORT void BCM_mldsa65_prehash_finalize(
279
+ uint8_t out_msg_rep[MLDSA_MU_BYTES], MLDSA65_prehash *inout_prehash_ctx);
280
+
281
+ OPENSSL_EXPORT bcm_status BCM_mldsa65_sign_message_representative(
282
+ uint8_t out_encoded_signature[MLDSA65_SIGNATURE_BYTES],
283
+ const MLDSA65_private_key *private_key,
284
+ const uint8_t msg_rep[MLDSA_MU_BYTES]);
285
+
286
+ OPENSSL_EXPORT bcm_status BCM_mldsa65_verify_message_representative(
287
+ const MLDSA65_public_key *public_key,
288
+ const uint8_t signature[MLDSA65_SIGNATURE_BYTES],
289
+ const uint8_t msg_rep[MLDSA_MU_BYTES]);
290
+
291
+ OPENSSL_EXPORT bcm_status
292
+ BCM_mldsa65_marshal_public_key(CBB *out, const MLDSA65_public_key *public_key);
293
+
294
+ OPENSSL_EXPORT bcm_status
295
+ BCM_mldsa65_parse_public_key(MLDSA65_public_key *public_key, CBS *in);
296
+
297
+ OPENSSL_EXPORT bcm_status
298
+ BCM_mldsa65_parse_private_key(MLDSA65_private_key *private_key, CBS *in);
329
299
 
330
300
  // BCM_mldsa65_generate_key_external_entropy generates a public/private key pair
331
301
  // using the given seed, writes the encoded public key to
332
- // |out_encoded_public_key| and sets |out_private_key| to the private key.
302
+ // `out_encoded_public_key` and sets `out_private_key` to the private key.
333
303
  OPENSSL_EXPORT bcm_status BCM_mldsa65_generate_key_external_entropy(
334
- uint8_t out_encoded_public_key[BCM_MLDSA65_PUBLIC_KEY_BYTES],
335
- struct BCM_mldsa65_private_key *out_private_key,
336
- const uint8_t entropy[BCM_MLDSA_SEED_BYTES]);
304
+ uint8_t out_encoded_public_key[MLDSA65_PUBLIC_KEY_BYTES],
305
+ MLDSA65_private_key *out_private_key,
306
+ const uint8_t entropy[MLDSA_SEED_BYTES]);
337
307
 
338
308
  OPENSSL_EXPORT bcm_status BCM_mldsa65_generate_key_external_entropy_fips(
339
- uint8_t out_encoded_public_key[BCM_MLDSA65_PUBLIC_KEY_BYTES],
340
- struct BCM_mldsa65_private_key *out_private_key,
341
- const uint8_t entropy[BCM_MLDSA_SEED_BYTES]);
309
+ uint8_t out_encoded_public_key[MLDSA65_PUBLIC_KEY_BYTES],
310
+ MLDSA65_private_key *out_private_key,
311
+ const uint8_t entropy[MLDSA_SEED_BYTES]);
342
312
 
343
- // BCM_mldsa5_sign_internal signs |msg| using |private_key| and writes the
344
- // signature to |out_encoded_signature|. The |context_prefix| and |context| are
345
- // prefixed to the message, in that order, before signing. The |randomizer|
313
+ // BCM_mldsa5_sign_internal signs `msg` using `private_key` and writes the
314
+ // signature to `out_encoded_signature`. The `context_prefix` and `context` are
315
+ // prefixed to the message, in that order, before signing. The `randomizer`
346
316
  // value can be set to zero bytes in order to make a deterministic signature, or
347
- // else filled with entropy for the usual |MLDSA_sign| behavior.
317
+ // else filled with entropy for the usual `MLDSA_sign` behavior.
348
318
  OPENSSL_EXPORT bcm_status BCM_mldsa65_sign_internal(
349
- uint8_t out_encoded_signature[BCM_MLDSA65_SIGNATURE_BYTES],
350
- const struct BCM_mldsa65_private_key *private_key, const uint8_t *msg,
351
- size_t msg_len, const uint8_t *context_prefix, size_t context_prefix_len,
319
+ uint8_t out_encoded_signature[MLDSA65_SIGNATURE_BYTES],
320
+ const MLDSA65_private_key *private_key, const uint8_t *msg, size_t msg_len,
321
+ const uint8_t *context_prefix, size_t context_prefix_len,
352
322
  const uint8_t *context, size_t context_len,
353
323
  const uint8_t randomizer[BCM_MLDSA_SIGNATURE_RANDOMIZER_BYTES]);
354
324
 
355
- // BCM_mldsa5_verify_internal verifies that |encoded_signature| is a valid
356
- // signature of |msg| by |public_key|. The |context_prefix| and |context| are
325
+ OPENSSL_EXPORT bcm_status BCM_mldsa65_sign_mu_internal(
326
+ uint8_t out_encoded_signature[MLDSA65_SIGNATURE_BYTES],
327
+ const MLDSA65_private_key *private_key,
328
+ const uint8_t msg_rep[MLDSA_MU_BYTES],
329
+ const uint8_t randomizer[BCM_MLDSA_SIGNATURE_RANDOMIZER_BYTES]);
330
+
331
+ // BCM_mldsa5_verify_internal verifies that `encoded_signature` is a valid
332
+ // signature of `msg` by `public_key`. The `context_prefix` and `context` are
357
333
  // prefixed to the message before verification, in that order.
358
334
  OPENSSL_EXPORT bcm_status BCM_mldsa65_verify_internal(
359
- const struct BCM_mldsa65_public_key *public_key,
360
- const uint8_t encoded_signature[BCM_MLDSA65_SIGNATURE_BYTES],
335
+ const MLDSA65_public_key *public_key,
336
+ const uint8_t encoded_signature[MLDSA65_SIGNATURE_BYTES],
361
337
  const uint8_t *msg, size_t msg_len, const uint8_t *context_prefix,
362
338
  size_t context_prefix_len, const uint8_t *context, size_t context_len);
363
339
 
364
- // BCM_mldsa65_marshal_private_key serializes |private_key| to |out| in the
340
+ // BCM_mldsa65_marshal_private_key serializes `private_key` to `out` in the
365
341
  // NIST format for ML-DSA-65 private keys.
366
342
  OPENSSL_EXPORT bcm_status BCM_mldsa65_marshal_private_key(
367
- CBB *out, const struct BCM_mldsa65_private_key *private_key);
343
+ CBB *out, const MLDSA65_private_key *private_key);
344
+
345
+ // BCM_mldsa65_public_keys_equal returns one if `a` and `b` are equal and zero
346
+ // otherwise.
347
+ int BCM_mldsa65_public_keys_equal(const MLDSA65_public_key *a,
348
+ const MLDSA65_public_key *b);
368
349
 
369
350
 
370
351
  // BCM_MLDSA87_PRIVATE_KEY_BYTES is the number of bytes in an encoded ML-DSA-87
371
352
  // private key.
372
353
  #define BCM_MLDSA87_PRIVATE_KEY_BYTES 4896
373
354
 
374
- // BCM_MLDSA87_PUBLIC_KEY_BYTES is the number of bytes in an encoded ML-DSA-87
375
- // public key.
376
- #define BCM_MLDSA87_PUBLIC_KEY_BYTES 2592
377
-
378
- // BCM_MLDSA87_SIGNATURE_BYTES is the number of bytes in an encoded ML-DSA-87
379
- // signature.
380
- #define BCM_MLDSA87_SIGNATURE_BYTES 4627
381
-
382
- struct BCM_mldsa87_private_key {
383
- union {
384
- uint8_t bytes[32 + 32 + 64 + 256 * 4 * (7 + 8 + 8)];
385
- uint32_t alignment;
386
- } opaque;
387
- };
388
-
389
- struct BCM_mldsa87_public_key {
390
- union {
391
- uint8_t bytes[32 + 64 + 256 * 4 * 8];
392
- uint32_t alignment;
393
- } opaque;
394
- };
395
-
396
355
  OPENSSL_EXPORT bcm_status BCM_mldsa87_generate_key(
397
- uint8_t out_encoded_public_key[BCM_MLDSA87_PUBLIC_KEY_BYTES],
398
- uint8_t out_seed[BCM_MLDSA_SEED_BYTES],
399
- struct BCM_mldsa87_private_key *out_private_key);
356
+ uint8_t out_encoded_public_key[MLDSA87_PUBLIC_KEY_BYTES],
357
+ uint8_t out_seed[MLDSA_SEED_BYTES], MLDSA87_private_key *out_private_key);
400
358
 
401
359
  OPENSSL_EXPORT bcm_status BCM_mldsa87_private_key_from_seed(
402
- struct BCM_mldsa87_private_key *out_private_key,
403
- const uint8_t seed[BCM_MLDSA_SEED_BYTES]);
360
+ MLDSA87_private_key *out_private_key, const uint8_t seed[MLDSA_SEED_BYTES]);
404
361
 
405
362
  OPENSSL_EXPORT bcm_status BCM_mldsa87_public_from_private(
406
- struct BCM_mldsa87_public_key *out_public_key,
407
- const struct BCM_mldsa87_private_key *private_key);
363
+ MLDSA87_public_key *out_public_key, const MLDSA87_private_key *private_key);
364
+
365
+ // BCM_mldsa87_public_of_private returns the public half of `private_key`.
366
+ const MLDSA87_public_key *BCM_mldsa87_public_of_private(
367
+ const MLDSA87_private_key *private_key);
408
368
 
409
369
  OPENSSL_EXPORT bcm_status
410
- BCM_mldsa87_check_key_fips(struct BCM_mldsa87_private_key *private_key);
370
+ BCM_mldsa87_check_key_fips(MLDSA87_private_key *private_key);
411
371
 
412
372
  OPENSSL_EXPORT bcm_status BCM_mldsa87_generate_key_fips(
413
- uint8_t out_encoded_public_key[BCM_MLDSA87_PUBLIC_KEY_BYTES],
414
- uint8_t out_seed[BCM_MLDSA_SEED_BYTES],
415
- struct BCM_mldsa87_private_key *out_private_key);
373
+ uint8_t out_encoded_public_key[MLDSA87_PUBLIC_KEY_BYTES],
374
+ uint8_t out_seed[MLDSA_SEED_BYTES], MLDSA87_private_key *out_private_key);
416
375
 
417
376
  OPENSSL_EXPORT bcm_status BCM_mldsa87_private_key_from_seed_fips(
418
- struct BCM_mldsa87_private_key *out_private_key,
419
- const uint8_t seed[BCM_MLDSA_SEED_BYTES]);
377
+ MLDSA87_private_key *out_private_key, const uint8_t seed[MLDSA_SEED_BYTES]);
420
378
 
421
- OPENSSL_EXPORT bcm_status BCM_mldsa87_sign(
422
- uint8_t out_encoded_signature[BCM_MLDSA87_SIGNATURE_BYTES],
423
- const struct BCM_mldsa87_private_key *private_key, const uint8_t *msg,
424
- size_t msg_len, const uint8_t *context, size_t context_len);
379
+ OPENSSL_EXPORT bcm_status
380
+ BCM_mldsa87_sign(uint8_t out_encoded_signature[MLDSA87_SIGNATURE_BYTES],
381
+ const MLDSA87_private_key *private_key, const uint8_t *msg,
382
+ size_t msg_len, const uint8_t *context, size_t context_len);
425
383
 
426
384
  OPENSSL_EXPORT bcm_status
427
- BCM_mldsa87_verify(const struct BCM_mldsa87_public_key *public_key,
385
+ BCM_mldsa87_verify(const MLDSA87_public_key *public_key,
428
386
  const uint8_t *signature, const uint8_t *msg, size_t msg_len,
429
387
  const uint8_t *context, size_t context_len);
430
388
 
431
- OPENSSL_EXPORT bcm_status BCM_mldsa87_marshal_public_key(
432
- CBB *out, const struct BCM_mldsa87_public_key *public_key);
389
+ OPENSSL_EXPORT void BCM_mldsa87_prehash_init(
390
+ MLDSA87_prehash *out_prehash_ctx, const MLDSA87_public_key *public_key,
391
+ const uint8_t *context, size_t context_len);
392
+
393
+ OPENSSL_EXPORT void BCM_mldsa87_prehash_update(
394
+ MLDSA87_prehash *inout_prehash_ctx, const uint8_t *msg, size_t msg_len);
395
+
396
+ OPENSSL_EXPORT void BCM_mldsa87_prehash_finalize(
397
+ uint8_t out_msg_rep[MLDSA_MU_BYTES], MLDSA87_prehash *inout_prehash_ctx);
398
+
399
+ OPENSSL_EXPORT bcm_status BCM_mldsa87_sign_message_representative(
400
+ uint8_t out_encoded_signature[MLDSA87_SIGNATURE_BYTES],
401
+ const MLDSA87_private_key *private_key,
402
+ const uint8_t msg_rep[MLDSA_MU_BYTES]);
403
+
404
+ OPENSSL_EXPORT bcm_status BCM_mldsa87_verify_message_representative(
405
+ const MLDSA87_public_key *public_key,
406
+ const uint8_t signature[MLDSA87_SIGNATURE_BYTES],
407
+ const uint8_t msg_rep[MLDSA_MU_BYTES]);
408
+
409
+ OPENSSL_EXPORT bcm_status
410
+ BCM_mldsa87_marshal_public_key(CBB *out, const MLDSA87_public_key *public_key);
433
411
 
434
- OPENSSL_EXPORT bcm_status BCM_mldsa87_parse_public_key(
435
- struct BCM_mldsa87_public_key *public_key, CBS *in);
412
+ OPENSSL_EXPORT bcm_status
413
+ BCM_mldsa87_parse_public_key(MLDSA87_public_key *public_key, CBS *in);
436
414
 
437
- OPENSSL_EXPORT bcm_status BCM_mldsa87_parse_private_key(
438
- struct BCM_mldsa87_private_key *private_key, CBS *in);
415
+ OPENSSL_EXPORT bcm_status
416
+ BCM_mldsa87_parse_private_key(MLDSA87_private_key *private_key, CBS *in);
439
417
 
440
418
  // BCM_mldsa87_generate_key_external_entropy generates a public/private key pair
441
419
  // using the given seed, writes the encoded public key to
442
- // |out_encoded_public_key| and sets |out_private_key| to the private key.
420
+ // `out_encoded_public_key` and sets `out_private_key` to the private key.
443
421
  OPENSSL_EXPORT bcm_status BCM_mldsa87_generate_key_external_entropy(
444
- uint8_t out_encoded_public_key[BCM_MLDSA87_PUBLIC_KEY_BYTES],
445
- struct BCM_mldsa87_private_key *out_private_key,
446
- const uint8_t entropy[BCM_MLDSA_SEED_BYTES]);
422
+ uint8_t out_encoded_public_key[MLDSA87_PUBLIC_KEY_BYTES],
423
+ MLDSA87_private_key *out_private_key,
424
+ const uint8_t entropy[MLDSA_SEED_BYTES]);
447
425
 
448
426
  OPENSSL_EXPORT bcm_status BCM_mldsa87_generate_key_external_entropy_fips(
449
- uint8_t out_encoded_public_key[BCM_MLDSA87_PUBLIC_KEY_BYTES],
450
- struct BCM_mldsa87_private_key *out_private_key,
451
- const uint8_t entropy[BCM_MLDSA_SEED_BYTES]);
427
+ uint8_t out_encoded_public_key[MLDSA87_PUBLIC_KEY_BYTES],
428
+ MLDSA87_private_key *out_private_key,
429
+ const uint8_t entropy[MLDSA_SEED_BYTES]);
452
430
 
453
- // BCM_mldsa87_sign_internal signs |msg| using |private_key| and writes the
454
- // signature to |out_encoded_signature|. The |context_prefix| and |context| are
455
- // prefixed to the message, in that order, before signing. The |randomizer|
431
+ // BCM_mldsa87_sign_internal signs `msg` using `private_key` and writes the
432
+ // signature to `out_encoded_signature`. The `context_prefix` and `context` are
433
+ // prefixed to the message, in that order, before signing. The `randomizer`
456
434
  // value can be set to zero bytes in order to make a deterministic signature, or
457
- // else filled with entropy for the usual |MLDSA_sign| behavior.
435
+ // else filled with entropy for the usual `MLDSA_sign` behavior.
458
436
  OPENSSL_EXPORT bcm_status BCM_mldsa87_sign_internal(
459
- uint8_t out_encoded_signature[BCM_MLDSA87_SIGNATURE_BYTES],
460
- const struct BCM_mldsa87_private_key *private_key, const uint8_t *msg,
461
- size_t msg_len, const uint8_t *context_prefix, size_t context_prefix_len,
437
+ uint8_t out_encoded_signature[MLDSA87_SIGNATURE_BYTES],
438
+ const MLDSA87_private_key *private_key, const uint8_t *msg, size_t msg_len,
439
+ const uint8_t *context_prefix, size_t context_prefix_len,
462
440
  const uint8_t *context, size_t context_len,
463
441
  const uint8_t randomizer[BCM_MLDSA_SIGNATURE_RANDOMIZER_BYTES]);
464
442
 
465
- // BCM_mldsa87_verify_internal verifies that |encoded_signature| is a valid
466
- // signature of |msg| by |public_key|. The |context_prefix| and |context| are
443
+ OPENSSL_EXPORT bcm_status BCM_mldsa87_sign_mu_internal(
444
+ uint8_t out_encoded_signature[MLDSA87_SIGNATURE_BYTES],
445
+ const MLDSA87_private_key *private_key,
446
+ const uint8_t msg_rep[MLDSA_MU_BYTES],
447
+ const uint8_t randomizer[BCM_MLDSA_SIGNATURE_RANDOMIZER_BYTES]);
448
+
449
+ // BCM_mldsa87_verify_internal verifies that `encoded_signature` is a valid
450
+ // signature of `msg` by `public_key`. The `context_prefix` and `context` are
467
451
  // prefixed to the message before verification, in that order.
468
452
  OPENSSL_EXPORT bcm_status BCM_mldsa87_verify_internal(
469
- const struct BCM_mldsa87_public_key *public_key,
470
- const uint8_t encoded_signature[BCM_MLDSA87_SIGNATURE_BYTES],
453
+ const MLDSA87_public_key *public_key,
454
+ const uint8_t encoded_signature[MLDSA87_SIGNATURE_BYTES],
471
455
  const uint8_t *msg, size_t msg_len, const uint8_t *context_prefix,
472
456
  size_t context_prefix_len, const uint8_t *context, size_t context_len);
473
457
 
474
- // BCM_mldsa87_marshal_private_key serializes |private_key| to |out| in the
458
+ // BCM_mldsa87_marshal_private_key serializes `private_key` to `out` in the
475
459
  // NIST format for ML-DSA-87 private keys.
476
460
  OPENSSL_EXPORT bcm_status BCM_mldsa87_marshal_private_key(
477
- CBB *out, const struct BCM_mldsa87_private_key *private_key);
461
+ CBB *out, const MLDSA87_private_key *private_key);
462
+
463
+ // BCM_mldsa87_public_keys_equal returns one if `a` and `b` are equal and zero
464
+ // otherwise.
465
+ int BCM_mldsa87_public_keys_equal(const MLDSA87_public_key *a,
466
+ const MLDSA87_public_key *b);
467
+
468
+ // BCM_MLDSA44_PRIVATE_KEY_BYTES is the number of bytes in an encoded ML-DSA-44
469
+ // private key.
470
+ #define BCM_MLDSA44_PRIVATE_KEY_BYTES 2560
471
+
472
+ OPENSSL_EXPORT bcm_status BCM_mldsa44_generate_key(
473
+ uint8_t out_encoded_public_key[MLDSA44_PUBLIC_KEY_BYTES],
474
+ uint8_t out_seed[MLDSA_SEED_BYTES], MLDSA44_private_key *out_private_key);
475
+
476
+ OPENSSL_EXPORT bcm_status BCM_mldsa44_private_key_from_seed(
477
+ MLDSA44_private_key *out_private_key, const uint8_t seed[MLDSA_SEED_BYTES]);
478
+
479
+ OPENSSL_EXPORT bcm_status BCM_mldsa44_public_from_private(
480
+ MLDSA44_public_key *out_public_key, const MLDSA44_private_key *private_key);
481
+
482
+ // BCM_mldsa44_public_of_private returns the public half of `private_key`.
483
+ const MLDSA44_public_key *BCM_mldsa44_public_of_private(
484
+ const MLDSA44_private_key *private_key);
485
+
486
+ OPENSSL_EXPORT bcm_status
487
+ BCM_mldsa44_check_key_fips(MLDSA44_private_key *private_key);
488
+
489
+ OPENSSL_EXPORT bcm_status BCM_mldsa44_generate_key_fips(
490
+ uint8_t out_encoded_public_key[MLDSA44_PUBLIC_KEY_BYTES],
491
+ uint8_t out_seed[MLDSA_SEED_BYTES], MLDSA44_private_key *out_private_key);
492
+
493
+ OPENSSL_EXPORT bcm_status BCM_mldsa44_private_key_from_seed_fips(
494
+ MLDSA44_private_key *out_private_key, const uint8_t seed[MLDSA_SEED_BYTES]);
495
+
496
+ OPENSSL_EXPORT bcm_status
497
+ BCM_mldsa44_sign(uint8_t out_encoded_signature[MLDSA44_SIGNATURE_BYTES],
498
+ const MLDSA44_private_key *private_key, const uint8_t *msg,
499
+ size_t msg_len, const uint8_t *context, size_t context_len);
500
+
501
+ OPENSSL_EXPORT bcm_status
502
+ BCM_mldsa44_verify(const MLDSA44_public_key *public_key,
503
+ const uint8_t *signature, const uint8_t *msg, size_t msg_len,
504
+ const uint8_t *context, size_t context_len);
505
+
506
+ OPENSSL_EXPORT void BCM_mldsa44_prehash_init(
507
+ MLDSA44_prehash *out_prehash_ctx, const MLDSA44_public_key *public_key,
508
+ const uint8_t *context, size_t context_len);
509
+
510
+ OPENSSL_EXPORT void BCM_mldsa44_prehash_update(
511
+ MLDSA44_prehash *inout_prehash_ctx, const uint8_t *msg, size_t msg_len);
512
+
513
+ OPENSSL_EXPORT void BCM_mldsa44_prehash_finalize(
514
+ uint8_t out_msg_rep[MLDSA_MU_BYTES], MLDSA44_prehash *inout_prehash_ctx);
515
+
516
+ OPENSSL_EXPORT bcm_status BCM_mldsa44_sign_message_representative(
517
+ uint8_t out_encoded_signature[MLDSA44_SIGNATURE_BYTES],
518
+ const MLDSA44_private_key *private_key,
519
+ const uint8_t msg_rep[MLDSA_MU_BYTES]);
520
+
521
+ OPENSSL_EXPORT bcm_status BCM_mldsa44_verify_message_representative(
522
+ const MLDSA44_public_key *public_key,
523
+ const uint8_t signature[MLDSA44_SIGNATURE_BYTES],
524
+ const uint8_t msg_rep[MLDSA_MU_BYTES]);
525
+
526
+ OPENSSL_EXPORT bcm_status
527
+ BCM_mldsa44_marshal_public_key(CBB *out, const MLDSA44_public_key *public_key);
528
+
529
+ OPENSSL_EXPORT bcm_status
530
+ BCM_mldsa44_parse_public_key(MLDSA44_public_key *public_key, CBS *in);
531
+
532
+ OPENSSL_EXPORT bcm_status
533
+ BCM_mldsa44_parse_private_key(MLDSA44_private_key *private_key, CBS *in);
534
+
535
+ // BCM_mldsa44_generate_key_external_entropy generates a public/private key pair
536
+ // using the given seed, writes the encoded public key to
537
+ // `out_encoded_public_key` and sets `out_private_key` to the private key.
538
+ OPENSSL_EXPORT bcm_status BCM_mldsa44_generate_key_external_entropy(
539
+ uint8_t out_encoded_public_key[MLDSA44_PUBLIC_KEY_BYTES],
540
+ MLDSA44_private_key *out_private_key,
541
+ const uint8_t entropy[MLDSA_SEED_BYTES]);
542
+
543
+ OPENSSL_EXPORT bcm_status BCM_mldsa44_generate_key_external_entropy_fips(
544
+ uint8_t out_encoded_public_key[MLDSA44_PUBLIC_KEY_BYTES],
545
+ MLDSA44_private_key *out_private_key,
546
+ const uint8_t entropy[MLDSA_SEED_BYTES]);
547
+
548
+ // BCM_mldsa44_sign_internal signs `msg` using `private_key` and writes the
549
+ // signature to `out_encoded_signature`. The `context_prefix` and `context` are
550
+ // prefixed to the message, in that order, before signing. The `randomizer`
551
+ // value can be set to zero bytes in order to make a deterministic signature, or
552
+ // else filled with entropy for the usual `MLDSA_sign` behavior.
553
+ OPENSSL_EXPORT bcm_status BCM_mldsa44_sign_internal(
554
+ uint8_t out_encoded_signature[MLDSA44_SIGNATURE_BYTES],
555
+ const MLDSA44_private_key *private_key, const uint8_t *msg, size_t msg_len,
556
+ const uint8_t *context_prefix, size_t context_prefix_len,
557
+ const uint8_t *context, size_t context_len,
558
+ const uint8_t randomizer[BCM_MLDSA_SIGNATURE_RANDOMIZER_BYTES]);
559
+
560
+ OPENSSL_EXPORT bcm_status BCM_mldsa44_sign_mu_internal(
561
+ uint8_t out_encoded_signature[MLDSA44_SIGNATURE_BYTES],
562
+ const MLDSA44_private_key *private_key,
563
+ const uint8_t msg_rep[MLDSA_MU_BYTES],
564
+ const uint8_t randomizer[BCM_MLDSA_SIGNATURE_RANDOMIZER_BYTES]);
565
+
566
+ // BCM_mldsa44_verify_internal verifies that `encoded_signature` is a valid
567
+ // signature of `msg` by `public_key`. The `context_prefix` and `context` are
568
+ // prefixed to the message before verification, in that order.
569
+ OPENSSL_EXPORT bcm_status BCM_mldsa44_verify_internal(
570
+ const MLDSA44_public_key *public_key,
571
+ const uint8_t encoded_signature[MLDSA44_SIGNATURE_BYTES],
572
+ const uint8_t *msg, size_t msg_len, const uint8_t *context_prefix,
573
+ size_t context_prefix_len, const uint8_t *context, size_t context_len);
574
+
575
+ // BCM_mldsa44_marshal_private_key serializes `private_key` to `out` in the
576
+ // NIST format for ML-DSA-44 private keys.
577
+ OPENSSL_EXPORT bcm_status BCM_mldsa44_marshal_private_key(
578
+ CBB *out, const MLDSA44_private_key *private_key);
579
+
580
+ // BCM_mldsa44_public_keys_equal returns one if `a` and `b` are equal and zero
581
+ // otherwise.
582
+ int BCM_mldsa44_public_keys_equal(const MLDSA44_public_key *a,
583
+ const MLDSA44_public_key *b);
478
584
 
479
585
 
480
586
  // ML-KEM
@@ -487,218 +593,182 @@ OPENSSL_EXPORT bcm_status BCM_mldsa87_marshal_private_key(
487
593
  // decapsulating party.
488
594
  #define BCM_MLKEM_ENCAP_ENTROPY 32
489
595
 
490
- // BCM_MLKEM768_PUBLIC_KEY_BYTES is the number of bytes in an encoded ML-KEM-768
491
- // public key.
492
- #define BCM_MLKEM768_PUBLIC_KEY_BYTES 1184
493
-
494
- // BCM_MLKEM1024_PUBLIC_KEY_BYTES is the number of bytes in an encoded
495
- // ML-KEM-1024 public key.
496
- #define BCM_MLKEM1024_PUBLIC_KEY_BYTES 1568
497
-
498
- // BCM_MLKEM768_CIPHERTEXT_BYTES is number of bytes in the ML-KEM-768
499
- // ciphertext.
500
- #define BCM_MLKEM768_CIPHERTEXT_BYTES 1088
501
-
502
- // BCM_MLKEM1024_CIPHERTEXT_BYTES is number of bytes in the ML-KEM-1024
503
- // ciphertext.
504
- #define BCM_MLKEM1024_CIPHERTEXT_BYTES 1568
505
-
506
596
  // BCM_MLKEM768_PRIVATE_KEY_BYTES is the length of the data produced by
507
- // |BCM_mlkem768_marshal_private_key|.
597
+ // `BCM_mlkem768_marshal_private_key`.
508
598
  #define BCM_MLKEM768_PRIVATE_KEY_BYTES 2400
509
599
 
510
600
  // BCM_MLKEM1024_PRIVATE_KEY_BYTES is the length of the data produced by
511
- // |BCM_mlkem1024_marshal_private_key|.
601
+ // `BCM_mlkem1024_marshal_private_key`.
512
602
  #define BCM_MLKEM1024_PRIVATE_KEY_BYTES 3168
513
603
 
514
- // BCM_MLKEM_SEED_BYTES is the number of bytes in an ML-KEM seed.
515
- #define BCM_MLKEM_SEED_BYTES 64
516
-
517
- // BCM_mlkem_SHARED_SECRET_BYTES is the number of bytes in an ML-KEM shared
518
- // secret.
519
- #define BCM_MLKEM_SHARED_SECRET_BYTES 32
520
-
521
- struct BCM_mlkem768_public_key {
522
- union {
523
- uint8_t bytes[512 * (3 + 9) + 32 + 32];
524
- uint16_t alignment;
525
- } opaque;
526
- };
527
-
528
- struct BCM_mlkem768_private_key {
529
- union {
530
- uint8_t bytes[512 * (3 + 3 + 9) + 32 + 32 + 32];
531
- uint16_t alignment;
532
- } opaque;
533
- };
534
-
535
-
536
-
537
604
  OPENSSL_EXPORT bcm_infallible BCM_mlkem768_generate_key(
538
- uint8_t out_encoded_public_key[BCM_MLKEM768_PUBLIC_KEY_BYTES],
539
- uint8_t optional_out_seed[BCM_MLKEM_SEED_BYTES],
540
- struct BCM_mlkem768_private_key *out_private_key);
605
+ uint8_t out_encoded_public_key[MLKEM768_PUBLIC_KEY_BYTES],
606
+ uint8_t optional_out_seed[MLKEM_SEED_BYTES],
607
+ MLKEM768_private_key *out_private_key);
541
608
 
542
- OPENSSL_EXPORT bcm_status BCM_mlkem768_private_key_from_seed(
543
- struct BCM_mlkem768_private_key *out_private_key, const uint8_t *seed,
544
- size_t seed_len);
609
+ OPENSSL_EXPORT bcm_status
610
+ BCM_mlkem768_private_key_from_seed(MLKEM768_private_key *out_private_key,
611
+ const uint8_t *seed, size_t seed_len);
545
612
 
546
613
  OPENSSL_EXPORT bcm_status BCM_mlkem768_generate_key_fips(
547
- uint8_t out_encoded_public_key[BCM_MLKEM768_PUBLIC_KEY_BYTES],
548
- uint8_t optional_out_seed[BCM_MLKEM_SEED_BYTES],
549
- struct BCM_mlkem768_private_key *out_private_key);
614
+ uint8_t out_encoded_public_key[MLKEM768_PUBLIC_KEY_BYTES],
615
+ uint8_t optional_out_seed[MLKEM_SEED_BYTES],
616
+ MLKEM768_private_key *out_private_key);
550
617
 
551
618
  OPENSSL_EXPORT bcm_status
552
- BCM_mlkem768_check_fips(const struct BCM_mlkem768_private_key *private_key);
619
+ BCM_mlkem768_check_fips(const MLKEM768_private_key *private_key);
553
620
 
554
- OPENSSL_EXPORT bcm_infallible BCM_mlkem768_public_from_private(
555
- struct BCM_mlkem768_public_key *out_public_key,
556
- const struct BCM_mlkem768_private_key *private_key);
621
+ OPENSSL_EXPORT bcm_infallible
622
+ BCM_mlkem768_public_from_private(MLKEM768_public_key *out_public_key,
623
+ const MLKEM768_private_key *private_key);
624
+
625
+ OPENSSL_EXPORT const MLKEM768_public_key *BCM_mlkem768_public_of_private(
626
+ const MLKEM768_private_key *private_key);
557
627
 
558
628
  OPENSSL_EXPORT bcm_infallible
559
- BCM_mlkem768_encap(uint8_t out_ciphertext[BCM_MLKEM768_CIPHERTEXT_BYTES],
560
- uint8_t out_shared_secret[BCM_MLKEM_SHARED_SECRET_BYTES],
561
- const struct BCM_mlkem768_public_key *public_key);
629
+ BCM_mlkem768_encap(uint8_t out_ciphertext[MLKEM768_CIPHERTEXT_BYTES],
630
+ uint8_t out_shared_secret[MLKEM_SHARED_SECRET_BYTES],
631
+ const MLKEM768_public_key *public_key);
562
632
 
563
633
  OPENSSL_EXPORT bcm_status
564
- BCM_mlkem768_decap(uint8_t out_shared_secret[BCM_MLKEM_SHARED_SECRET_BYTES],
634
+ BCM_mlkem768_decap(uint8_t out_shared_secret[MLKEM_SHARED_SECRET_BYTES],
565
635
  const uint8_t *ciphertext, size_t ciphertext_len,
566
- const struct BCM_mlkem768_private_key *private_key);
636
+ const MLKEM768_private_key *private_key);
567
637
 
568
638
  OPENSSL_EXPORT bcm_status BCM_mlkem768_marshal_public_key(
569
- CBB *out, const struct BCM_mlkem768_public_key *public_key);
639
+ CBB *out, const MLKEM768_public_key *public_key);
640
+
641
+ // BCM_mlkem768_public_keys_equal returns one if `a` and `b` are equal and zero
642
+ // otherwise.
643
+ int BCM_mlkem768_public_keys_equal(const MLKEM768_public_key *a,
644
+ const MLKEM768_public_key *b);
570
645
 
571
- OPENSSL_EXPORT bcm_status BCM_mlkem768_parse_public_key(
572
- struct BCM_mlkem768_public_key *out_public_key, CBS *in);
646
+ OPENSSL_EXPORT bcm_status
647
+ BCM_mlkem768_parse_public_key(MLKEM768_public_key *out_public_key, CBS *in);
573
648
 
574
649
  // BCM_mlkem768_parse_private_key parses a private key, in NIST's format for
575
- // private keys, from |in| and writes the result to |out_private_key|. It
650
+ // private keys, from `in` and writes the result to `out_private_key`. It
576
651
  // returns one on success or zero on parse error or if there are trailing bytes
577
- // in |in|. This format is verbose and should be avoided. Private keys should be
578
- // stored as seeds and parsed using |BCM_mlkem768_private_key_from_seed|.
579
- OPENSSL_EXPORT bcm_status BCM_mlkem768_parse_private_key(
580
- struct BCM_mlkem768_private_key *out_private_key, CBS *in);
652
+ // in `in`. This format is verbose and should be avoided. Private keys should be
653
+ // stored as seeds and parsed using `BCM_mlkem768_private_key_from_seed`.
654
+ OPENSSL_EXPORT bcm_status
655
+ BCM_mlkem768_parse_private_key(MLKEM768_private_key *out_private_key, CBS *in);
581
656
 
582
657
  // BCM_mlkem768_generate_key_external_seed is a deterministic function to create
583
658
  // a pair of ML-KEM-768 keys, using the supplied seed. The seed needs to be
584
659
  // uniformly random. This function should only be used for tests; regular
585
- // callers should use the non-deterministic |BCM_mlkem768_generate_key|
660
+ // callers should use the non-deterministic `BCM_mlkem768_generate_key`
586
661
  // directly.
587
662
  OPENSSL_EXPORT bcm_infallible BCM_mlkem768_generate_key_external_seed(
588
- uint8_t out_encoded_public_key[BCM_MLKEM768_PUBLIC_KEY_BYTES],
589
- struct BCM_mlkem768_private_key *out_private_key,
590
- const uint8_t seed[BCM_MLKEM_SEED_BYTES]);
663
+ uint8_t out_encoded_public_key[MLKEM768_PUBLIC_KEY_BYTES],
664
+ MLKEM768_private_key *out_private_key,
665
+ const uint8_t seed[MLKEM_SEED_BYTES]);
591
666
 
592
- // BCM_mlkem768_encap_external_entropy behaves like |MLKEM768_encap|, but uses
593
- // |MLKEM_ENCAP_ENTROPY| bytes of |entropy| for randomization. The decapsulating
594
- // side will be able to recover |entropy| in full. This function should only be
667
+ // BCM_mlkem768_encap_external_entropy behaves like `MLKEM768_encap`, but uses
668
+ // `MLKEM_ENCAP_ENTROPY` bytes of `entropy` for randomization. The decapsulating
669
+ // side will be able to recover `entropy` in full. This function should only be
595
670
  // used for tests, regular callers should use the non-deterministic
596
- // |BCM_mlkem768_encap| directly.
671
+ // `BCM_mlkem768_encap` directly.
597
672
  OPENSSL_EXPORT bcm_infallible BCM_mlkem768_encap_external_entropy(
598
- uint8_t out_ciphertext[BCM_MLKEM768_CIPHERTEXT_BYTES],
599
- uint8_t out_shared_secret[BCM_MLKEM_SHARED_SECRET_BYTES],
600
- const struct BCM_mlkem768_public_key *public_key,
673
+ uint8_t out_ciphertext[MLKEM768_CIPHERTEXT_BYTES],
674
+ uint8_t out_shared_secret[MLKEM_SHARED_SECRET_BYTES],
675
+ const MLKEM768_public_key *public_key,
601
676
  const uint8_t entropy[BCM_MLKEM_ENCAP_ENTROPY]);
602
677
 
603
- // BCM_mlkem768_marshal_private_key serializes |private_key| to |out| in the
678
+ // BCM_mlkem768_marshal_private_key serializes `private_key` to `out` in the
604
679
  // NIST format for ML-KEM-768 private keys. (Note that one can also save just
605
- // the seed value produced by |BCM_mlkem768_generate_key|, which is
680
+ // the seed value produced by `BCM_mlkem768_generate_key`, which is
606
681
  // significantly smaller.)
607
682
  OPENSSL_EXPORT bcm_status BCM_mlkem768_marshal_private_key(
608
- CBB *out, const struct BCM_mlkem768_private_key *private_key);
609
-
610
- struct BCM_mlkem1024_public_key {
611
- union {
612
- uint8_t bytes[512 * (4 + 16) + 32 + 32];
613
- uint16_t alignment;
614
- } opaque;
615
- };
616
-
617
- struct BCM_mlkem1024_private_key {
618
- union {
619
- uint8_t bytes[512 * (4 + 4 + 16) + 32 + 32 + 32];
620
- uint16_t alignment;
621
- } opaque;
622
- };
683
+ CBB *out, const MLKEM768_private_key *private_key);
623
684
 
624
685
  OPENSSL_EXPORT bcm_infallible BCM_mlkem1024_generate_key(
625
- uint8_t out_encoded_public_key[BCM_MLKEM1024_PUBLIC_KEY_BYTES],
626
- uint8_t optional_out_seed[BCM_MLKEM_SEED_BYTES],
627
- struct BCM_mlkem1024_private_key *out_private_key);
686
+ uint8_t out_encoded_public_key[MLKEM1024_PUBLIC_KEY_BYTES],
687
+ uint8_t optional_out_seed[MLKEM_SEED_BYTES],
688
+ MLKEM1024_private_key *out_private_key);
628
689
 
629
690
  OPENSSL_EXPORT bcm_status BCM_mlkem1024_generate_key_fips(
630
- uint8_t out_encoded_public_key[BCM_MLKEM1024_PUBLIC_KEY_BYTES],
631
- uint8_t optional_out_seed[BCM_MLKEM_SEED_BYTES],
632
- struct BCM_mlkem1024_private_key *out_private_key);
691
+ uint8_t out_encoded_public_key[MLKEM1024_PUBLIC_KEY_BYTES],
692
+ uint8_t optional_out_seed[MLKEM_SEED_BYTES],
693
+ MLKEM1024_private_key *out_private_key);
633
694
 
634
695
  OPENSSL_EXPORT bcm_status
635
- BCM_mlkem1024_check_fips(const struct BCM_mlkem1024_private_key *private_key);
696
+ BCM_mlkem1024_check_fips(const MLKEM1024_private_key *private_key);
636
697
 
637
- OPENSSL_EXPORT bcm_status BCM_mlkem1024_private_key_from_seed(
638
- struct BCM_mlkem1024_private_key *out_private_key, const uint8_t *seed,
639
- size_t seed_len);
698
+ OPENSSL_EXPORT bcm_status
699
+ BCM_mlkem1024_private_key_from_seed(MLKEM1024_private_key *out_private_key,
700
+ const uint8_t *seed, size_t seed_len);
640
701
 
641
- OPENSSL_EXPORT bcm_infallible BCM_mlkem1024_public_from_private(
642
- struct BCM_mlkem1024_public_key *out_public_key,
643
- const struct BCM_mlkem1024_private_key *private_key);
702
+ OPENSSL_EXPORT bcm_infallible
703
+ BCM_mlkem1024_public_from_private(MLKEM1024_public_key *out_public_key,
704
+ const MLKEM1024_private_key *private_key);
705
+
706
+ OPENSSL_EXPORT const MLKEM1024_public_key *BCM_mlkem1024_public_of_private(
707
+ const MLKEM1024_private_key *private_key);
644
708
 
645
709
  OPENSSL_EXPORT bcm_infallible
646
- BCM_mlkem1024_encap(uint8_t out_ciphertext[BCM_MLKEM1024_CIPHERTEXT_BYTES],
647
- uint8_t out_shared_secret[BCM_MLKEM_SHARED_SECRET_BYTES],
648
- const struct BCM_mlkem1024_public_key *public_key);
710
+ BCM_mlkem1024_encap(uint8_t out_ciphertext[MLKEM1024_CIPHERTEXT_BYTES],
711
+ uint8_t out_shared_secret[MLKEM_SHARED_SECRET_BYTES],
712
+ const MLKEM1024_public_key *public_key);
649
713
 
650
714
  OPENSSL_EXPORT bcm_status
651
- BCM_mlkem1024_decap(uint8_t out_shared_secret[BCM_MLKEM_SHARED_SECRET_BYTES],
715
+ BCM_mlkem1024_decap(uint8_t out_shared_secret[MLKEM_SHARED_SECRET_BYTES],
652
716
  const uint8_t *ciphertext, size_t ciphertext_len,
653
- const struct BCM_mlkem1024_private_key *private_key);
717
+ const MLKEM1024_private_key *private_key);
654
718
 
655
719
  OPENSSL_EXPORT bcm_status BCM_mlkem1024_marshal_public_key(
656
- CBB *out, const struct BCM_mlkem1024_public_key *public_key);
720
+ CBB *out, const MLKEM1024_public_key *public_key);
657
721
 
658
- OPENSSL_EXPORT bcm_status BCM_mlkem1024_parse_public_key(
659
- struct BCM_mlkem1024_public_key *out_public_key, CBS *in);
722
+ // BCM_mlkem1024_public_keys_equal returns one if `a` and `b` are equal and zero
723
+ // otherwise.
724
+ int BCM_mlkem1024_public_keys_equal(const MLKEM1024_public_key *a,
725
+ const MLKEM1024_public_key *b);
726
+
727
+ OPENSSL_EXPORT bcm_status
728
+ BCM_mlkem1024_parse_public_key(MLKEM1024_public_key *out_public_key, CBS *in);
660
729
 
661
730
  // BCM_mlkem1024_parse_private_key parses a private key, in NIST's format for
662
- // private keys, from |in| and writes the result to |out_private_key|. It
731
+ // private keys, from `in` and writes the result to `out_private_key`. It
663
732
  // returns one on success or zero on parse error or if there are trailing bytes
664
- // in |in|. This format is verbose and should be avoided. Private keys should be
665
- // stored as seeds and parsed using |BCM_mlkem1024_private_key_from_seed|.
733
+ // in `in`. This format is verbose and should be avoided. Private keys should be
734
+ // stored as seeds and parsed using `BCM_mlkem1024_private_key_from_seed`.
666
735
  OPENSSL_EXPORT bcm_status BCM_mlkem1024_parse_private_key(
667
- struct BCM_mlkem1024_private_key *out_private_key, CBS *in);
736
+ MLKEM1024_private_key *out_private_key, CBS *in);
668
737
 
669
738
  // BCM_mlkem1024_generate_key_external_seed is a deterministic function to
670
739
  // create a pair of ML-KEM-1024 keys, using the supplied seed. The seed needs to
671
740
  // be uniformly random. This function should only be used for tests, regular
672
- // callers should use the non-deterministic |BCM_mlkem1024_generate_key|
741
+ // callers should use the non-deterministic `BCM_mlkem1024_generate_key`
673
742
  // directly.
674
743
  OPENSSL_EXPORT bcm_infallible BCM_mlkem1024_generate_key_external_seed(
675
- uint8_t out_encoded_public_key[BCM_MLKEM1024_PUBLIC_KEY_BYTES],
676
- struct BCM_mlkem1024_private_key *out_private_key,
677
- const uint8_t seed[BCM_MLKEM_SEED_BYTES]);
744
+ uint8_t out_encoded_public_key[MLKEM1024_PUBLIC_KEY_BYTES],
745
+ MLKEM1024_private_key *out_private_key,
746
+ const uint8_t seed[MLKEM_SEED_BYTES]);
678
747
 
679
- // BCM_mlkem1024_encap_external_entropy behaves like |MLKEM1024_encap|, but uses
680
- // |MLKEM_ENCAP_ENTROPY| bytes of |entropy| for randomization. The
681
- // decapsulating side will be able to recover |entropy| in full. This function
748
+ // BCM_mlkem1024_encap_external_entropy behaves like `MLKEM1024_encap`, but uses
749
+ // `MLKEM_ENCAP_ENTROPY` bytes of `entropy` for randomization. The
750
+ // decapsulating side will be able to recover `entropy` in full. This function
682
751
  // should only be used for tests, regular callers should use the
683
- // non-deterministic |BCM_mlkem1024_encap| directly.
752
+ // non-deterministic `BCM_mlkem1024_encap` directly.
684
753
  OPENSSL_EXPORT bcm_infallible BCM_mlkem1024_encap_external_entropy(
685
- uint8_t out_ciphertext[BCM_MLKEM1024_CIPHERTEXT_BYTES],
686
- uint8_t out_shared_secret[BCM_MLKEM_SHARED_SECRET_BYTES],
687
- const struct BCM_mlkem1024_public_key *public_key,
754
+ uint8_t out_ciphertext[MLKEM1024_CIPHERTEXT_BYTES],
755
+ uint8_t out_shared_secret[MLKEM_SHARED_SECRET_BYTES],
756
+ const MLKEM1024_public_key *public_key,
688
757
  const uint8_t entropy[BCM_MLKEM_ENCAP_ENTROPY]);
689
758
 
690
- // BCM_mlkem1024_marshal_private_key serializes |private_key| to |out| in the
759
+ // BCM_mlkem1024_marshal_private_key serializes `private_key` to `out` in the
691
760
  // NIST format for ML-KEM-1024 private keys. (Note that one can also save just
692
- // the seed value produced by |BCM_mlkem1024_generate_key|, which is
761
+ // the seed value produced by `BCM_mlkem1024_generate_key`, which is
693
762
  // significantly smaller.)
694
763
  OPENSSL_EXPORT bcm_status BCM_mlkem1024_marshal_private_key(
695
- CBB *out, const struct BCM_mlkem1024_private_key *private_key);
764
+ CBB *out, const MLKEM1024_private_key *private_key);
696
765
 
697
766
 
698
767
  // SLH-DSA
699
768
 
700
769
  // Output length of the hash function.
701
770
  #define BCM_SLHDSA_SHA2_128S_N 16
771
+ #define BCM_SLHDSA_SHAKE_256F_N 32
702
772
 
703
773
  // The number of bytes at the beginning of M', the augmented message, before the
704
774
  // context.
@@ -707,23 +777,31 @@ OPENSSL_EXPORT bcm_status BCM_mlkem1024_marshal_private_key(
707
777
  // SLHDSA_SHA2_128S_PUBLIC_KEY_BYTES is the number of bytes in an
708
778
  // SLH-DSA-SHA2-128s public key.
709
779
  #define BCM_SLHDSA_SHA2_128S_PUBLIC_KEY_BYTES 32
780
+ #define BCM_SLHDSA_SHAKE_256F_PUBLIC_KEY_BYTES 64
710
781
 
711
782
  // BCM_SLHDSA_SHA2_128S_PRIVATE_KEY_BYTES is the number of bytes in an
712
783
  // SLH-DSA-SHA2-128s private key.
713
784
  #define BCM_SLHDSA_SHA2_128S_PRIVATE_KEY_BYTES 64
785
+ #define BCM_SLHDSA_SHAKE_256F_PRIVATE_KEY_BYTES 128
714
786
 
715
787
  // BCM_SLHDSA_SHA2_128S_SIGNATURE_BYTES is the number of bytes in an
716
788
  // SLH-DSA-SHA2-128s signature.
717
789
  #define BCM_SLHDSA_SHA2_128S_SIGNATURE_BYTES 7856
790
+ #define BCM_SLHDSA_SHAKE_256F_SIGNATURE_BYTES 49856
718
791
 
719
792
  // BCM_slhdsa_sha2_128s_generate_key_from_seed generates an SLH-DSA-SHA2-128s
720
- // key pair from a 48-byte seed and writes the result to |out_public_key| and
721
- // |out_secret_key|.
793
+ // key pair from a 48-byte seed and writes the result to `out_public_key` and
794
+ // `out_secret_key`.
722
795
  OPENSSL_EXPORT bcm_infallible BCM_slhdsa_sha2_128s_generate_key_from_seed(
723
796
  uint8_t out_public_key[BCM_SLHDSA_SHA2_128S_PUBLIC_KEY_BYTES],
724
797
  uint8_t out_secret_key[BCM_SLHDSA_SHA2_128S_PRIVATE_KEY_BYTES],
725
798
  const uint8_t seed[3 * BCM_SLHDSA_SHA2_128S_N]);
726
799
 
800
+ OPENSSL_EXPORT bcm_infallible BCM_slhdsa_shake_256f_generate_key_from_seed(
801
+ uint8_t out_public_key[BCM_SLHDSA_SHAKE_256F_PUBLIC_KEY_BYTES],
802
+ uint8_t out_secret_key[BCM_SLHDSA_SHAKE_256F_PRIVATE_KEY_BYTES],
803
+ const uint8_t seed[3 * BCM_SLHDSA_SHAKE_256F_N]);
804
+
727
805
  // BCM_slhdsa_sha2_128s_generate_key_from_seed_fips does the same thing as
728
806
  // `BCM_slhdsa_sha2_128s_generate_key_from_seed` but implements the required
729
807
  // second check before generating a key by testing for nullptr arguments.
@@ -732,11 +810,16 @@ OPENSSL_EXPORT bcm_status BCM_slhdsa_sha2_128s_generate_key_from_seed_fips(
732
810
  uint8_t out_secret_key[BCM_SLHDSA_SHA2_128S_PRIVATE_KEY_BYTES],
733
811
  const uint8_t seed[3 * BCM_SLHDSA_SHA2_128S_N]);
734
812
 
735
- // BCM_slhdsa_sha2_128s_sign_internal acts like |SLHDSA_SHA2_128S_sign| but
813
+ OPENSSL_EXPORT bcm_status BCM_slhdsa_shake_256f_generate_key_from_seed_fips(
814
+ uint8_t out_public_key[BCM_SLHDSA_SHAKE_256F_PUBLIC_KEY_BYTES],
815
+ uint8_t out_secret_key[BCM_SLHDSA_SHAKE_256F_PRIVATE_KEY_BYTES],
816
+ const uint8_t seed[3 * BCM_SLHDSA_SHAKE_256F_N]);
817
+
818
+ // BCM_slhdsa_sha2_128s_sign_internal acts like `SLHDSA_SHA2_128S_sign` but
736
819
  // accepts an explicit entropy input, which can be PK.seed (bytes 32..48 of
737
820
  // the private key) to generate deterministic signatures. It also takes the
738
821
  // input message in three parts so that the "internal" version of the signing
739
- // function, from section 9.2, can be implemented. The |header| argument may be
822
+ // function, from section 9.2, can be implemented. The `header` argument may be
740
823
  // NULL to omit it.
741
824
  OPENSSL_EXPORT bcm_infallible BCM_slhdsa_sha2_128s_sign_internal(
742
825
  uint8_t out_signature[BCM_SLHDSA_SHA2_128S_SIGNATURE_BYTES],
@@ -745,9 +828,16 @@ OPENSSL_EXPORT bcm_infallible BCM_slhdsa_sha2_128s_sign_internal(
745
828
  size_t context_len, const uint8_t *msg, size_t msg_len,
746
829
  const uint8_t entropy[BCM_SLHDSA_SHA2_128S_N]);
747
830
 
748
- // BCM_slhdsa_sha2_128s_verify_internal acts like |SLHDSA_SHA2_128S_verify| but
831
+ OPENSSL_EXPORT bcm_infallible BCM_slhdsa_shake_256f_sign_internal(
832
+ uint8_t out_signature[BCM_SLHDSA_SHAKE_256F_SIGNATURE_BYTES],
833
+ const uint8_t secret_key[BCM_SLHDSA_SHAKE_256F_PRIVATE_KEY_BYTES],
834
+ const uint8_t header[BCM_SLHDSA_M_PRIME_HEADER_LEN], const uint8_t *context,
835
+ size_t context_len, const uint8_t *msg, size_t msg_len,
836
+ const uint8_t entropy[BCM_SLHDSA_SHAKE_256F_N]);
837
+
838
+ // BCM_slhdsa_sha2_128s_verify_internal acts like `SLHDSA_SHA2_128S_verify` but
749
839
  // takes the input message in three parts so that the "internal" version of the
750
- // verification function, from section 9.3, can be implemented. The |header|
840
+ // verification function, from section 9.3, can be implemented. The `header`
751
841
  // argument may be NULL to omit it.
752
842
  OPENSSL_EXPORT bcm_status BCM_slhdsa_sha2_128s_verify_internal(
753
843
  const uint8_t *signature, size_t signature_len,
@@ -755,71 +845,109 @@ OPENSSL_EXPORT bcm_status BCM_slhdsa_sha2_128s_verify_internal(
755
845
  const uint8_t header[BCM_SLHDSA_M_PRIME_HEADER_LEN], const uint8_t *context,
756
846
  size_t context_len, const uint8_t *msg, size_t msg_len);
757
847
 
848
+ OPENSSL_EXPORT bcm_status BCM_slhdsa_shake_256f_verify_internal(
849
+ const uint8_t *signature, size_t signature_len,
850
+ const uint8_t public_key[BCM_SLHDSA_SHAKE_256F_PUBLIC_KEY_BYTES],
851
+ const uint8_t header[BCM_SLHDSA_M_PRIME_HEADER_LEN], const uint8_t *context,
852
+ size_t context_len, const uint8_t *msg, size_t msg_len);
853
+
758
854
  OPENSSL_EXPORT bcm_infallible BCM_slhdsa_sha2_128s_generate_key(
759
855
  uint8_t out_public_key[BCM_SLHDSA_SHA2_128S_PUBLIC_KEY_BYTES],
760
856
  uint8_t out_private_key[BCM_SLHDSA_SHA2_128S_PRIVATE_KEY_BYTES]);
761
857
 
858
+ OPENSSL_EXPORT bcm_infallible BCM_slhdsa_shake_256f_generate_key(
859
+ uint8_t out_public_key[BCM_SLHDSA_SHAKE_256F_PUBLIC_KEY_BYTES],
860
+ uint8_t out_private_key[BCM_SLHDSA_SHAKE_256F_PRIVATE_KEY_BYTES]);
861
+
762
862
  OPENSSL_EXPORT bcm_status BCM_slhdsa_sha2_128s_generate_key_fips(
763
863
  uint8_t out_public_key[BCM_SLHDSA_SHA2_128S_PUBLIC_KEY_BYTES],
764
864
  uint8_t out_private_key[BCM_SLHDSA_SHA2_128S_PRIVATE_KEY_BYTES]);
765
865
 
866
+ OPENSSL_EXPORT bcm_status BCM_slhdsa_shake_256f_generate_key_fips(
867
+ uint8_t out_public_key[BCM_SLHDSA_SHAKE_256F_PUBLIC_KEY_BYTES],
868
+ uint8_t out_private_key[BCM_SLHDSA_SHAKE_256F_PRIVATE_KEY_BYTES]);
869
+
766
870
  OPENSSL_EXPORT bcm_infallible BCM_slhdsa_sha2_128s_public_from_private(
767
871
  uint8_t out_public_key[BCM_SLHDSA_SHA2_128S_PUBLIC_KEY_BYTES],
768
872
  const uint8_t private_key[BCM_SLHDSA_SHA2_128S_PRIVATE_KEY_BYTES]);
769
873
 
874
+ OPENSSL_EXPORT bcm_infallible BCM_slhdsa_shake_256f_public_from_private(
875
+ uint8_t out_public_key[BCM_SLHDSA_SHAKE_256F_PUBLIC_KEY_BYTES],
876
+ const uint8_t private_key[BCM_SLHDSA_SHAKE_256F_PRIVATE_KEY_BYTES]);
877
+
770
878
  OPENSSL_EXPORT bcm_status BCM_slhdsa_sha2_128s_sign(
771
879
  uint8_t out_signature[BCM_SLHDSA_SHA2_128S_SIGNATURE_BYTES],
772
880
  const uint8_t private_key[BCM_SLHDSA_SHA2_128S_PRIVATE_KEY_BYTES],
773
881
  const uint8_t *msg, size_t msg_len, const uint8_t *context,
774
882
  size_t context_len);
775
883
 
884
+ OPENSSL_EXPORT bcm_status BCM_slhdsa_shake_256f_sign(
885
+ uint8_t out_signature[BCM_SLHDSA_SHAKE_256F_SIGNATURE_BYTES],
886
+ const uint8_t private_key[BCM_SLHDSA_SHAKE_256F_PRIVATE_KEY_BYTES],
887
+ const uint8_t *msg, size_t msg_len, const uint8_t *context,
888
+ size_t context_len);
889
+
776
890
  OPENSSL_EXPORT bcm_status BCM_slhdsa_sha2_128s_verify(
777
891
  const uint8_t *signature, size_t signature_len,
778
892
  const uint8_t public_key[BCM_SLHDSA_SHA2_128S_PUBLIC_KEY_BYTES],
779
893
  const uint8_t *msg, size_t msg_len, const uint8_t *context,
780
894
  size_t context_len);
781
895
 
896
+ OPENSSL_EXPORT bcm_status BCM_slhdsa_shake_256f_verify(
897
+ const uint8_t *signature, size_t signature_len,
898
+ const uint8_t public_key[BCM_SLHDSA_SHAKE_256F_PUBLIC_KEY_BYTES],
899
+ const uint8_t *msg, size_t msg_len, const uint8_t *context,
900
+ size_t context_len);
901
+
782
902
  OPENSSL_EXPORT bcm_status BCM_slhdsa_sha2_128s_prehash_sign(
783
903
  uint8_t out_signature[BCM_SLHDSA_SHA2_128S_SIGNATURE_BYTES],
784
904
  const uint8_t private_key[BCM_SLHDSA_SHA2_128S_PRIVATE_KEY_BYTES],
785
905
  const uint8_t *hashed_msg, size_t hashed_msg_len, int hash_nid,
786
906
  const uint8_t *context, size_t context_len);
787
907
 
908
+ OPENSSL_EXPORT bcm_status BCM_slhdsa_shake_256f_prehash_sign(
909
+ uint8_t out_signature[BCM_SLHDSA_SHAKE_256F_SIGNATURE_BYTES],
910
+ const uint8_t private_key[BCM_SLHDSA_SHAKE_256F_PRIVATE_KEY_BYTES],
911
+ const uint8_t *hashed_msg, size_t hashed_msg_len, int hash_nid,
912
+ const uint8_t *context, size_t context_len);
913
+
788
914
  OPENSSL_EXPORT bcm_status BCM_slhdsa_sha2_128s_prehash_verify(
789
915
  const uint8_t *signature, size_t signature_len,
790
916
  const uint8_t public_key[BCM_SLHDSA_SHA2_128S_PUBLIC_KEY_BYTES],
791
917
  const uint8_t *hashed_msg, size_t hashed_msg_len, int hash_nid,
792
918
  const uint8_t *context, size_t context_len);
793
919
 
920
+ OPENSSL_EXPORT bcm_status BCM_slhdsa_shake_256f_prehash_verify(
921
+ const uint8_t *signature, size_t signature_len,
922
+ const uint8_t public_key[BCM_SLHDSA_SHAKE_256F_PUBLIC_KEY_BYTES],
923
+ const uint8_t *hashed_msg, size_t hashed_msg_len, int hash_nid,
924
+ const uint8_t *context, size_t context_len);
925
+
794
926
 
795
927
  // AES
796
928
 
797
- // BCM_aes_encrypt encrypts a single block from |in| to |out| with |key|. The
798
- // |in| and |out| pointers may overlap.
799
- OPENSSL_EXPORT bcm_infallible BCM_aes_encrypt(const uint8_t *in, uint8_t *out,
800
- const AES_KEY *key);
801
- // BCM_aes_decrypt decrypts a single block from |in| to |out| with |key|. The
802
- // |in| and |out| pointers may overlap.
803
- OPENSSL_EXPORT bcm_infallible BCM_aes_decrypt(const uint8_t *in, uint8_t *out,
804
- const AES_KEY *key);
805
-
806
- // BCM_aes_set_encrypt_key configures |aeskey| to encrypt with the |bits|-bit
807
- // key, |key|. |key| must point to |bits|/8 bytes. It will return failure if
808
- // |bits| is an invalid AES key size.
809
- OPENSSL_EXPORT bcm_status BCM_aes_set_encrypt_key(const uint8_t *key,
810
- unsigned bits,
811
- AES_KEY *aeskey);
812
-
813
- // BCM_aes_set_decrypt_key configures |aeskey| to decrypt with the |bits|-bit
814
- // key, |key|. |key| must point to |bits|/8 bytes. It will return failure if
815
- // |bits| is an invalid AES key size.
816
- OPENSSL_EXPORT bcm_status BCM_aes_set_decrypt_key(const uint8_t *key,
817
- unsigned bits,
818
- AES_KEY *aeskey);
819
-
820
-
821
- #if defined(__cplusplus)
822
- } // extern C
823
- #endif
929
+ // BCM_aes_encrypt encrypts a single block from `in` to `out` with `key`. The
930
+ // `in` and `out` pointers may overlap.
931
+ bcm_infallible BCM_aes_encrypt(const uint8_t *in, uint8_t *out,
932
+ const AES_KEY *key);
933
+ // BCM_aes_decrypt decrypts a single block from `in` to `out` with `key`. The
934
+ // `in` and `out` pointers may overlap.
935
+ bcm_infallible BCM_aes_decrypt(const uint8_t *in, uint8_t *out,
936
+ const AES_KEY *key);
937
+
938
+ // BCM_aes_set_encrypt_key configures `aeskey` to encrypt with the `bits`-bit
939
+ // key, `key`. `key` must point to `bits`/8 bytes. It will return failure if
940
+ // `bits` is an invalid AES key size.
941
+ bcm_status BCM_aes_set_encrypt_key(const uint8_t *key, unsigned bits,
942
+ AES_KEY *aeskey);
943
+
944
+ // BCM_aes_set_decrypt_key configures `aeskey` to decrypt with the `bits`-bit
945
+ // key, `key`. `key` must point to `bits`/8 bytes. It will return failure if
946
+ // `bits` is an invalid AES key size.
947
+ bcm_status BCM_aes_set_decrypt_key(const uint8_t *key, unsigned bits,
948
+ AES_KEY *aeskey);
949
+
950
+ BSSL_NAMESPACE_END
951
+
824
952
 
825
953
  #endif // OPENSSL_HEADER_CRYPTO_FIPSMODULE_BCM_INTERFACE_H