grpc 1.84.1 → 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.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (1005) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +40 -27
  3. data/etc/roots.pem +7940 -6467
  4. data/include/grpc/event_engine/memory_allocator.h +1 -0
  5. data/include/grpc/grpc.h +3 -0
  6. data/include/grpc/grpc_security_constants.h +2 -0
  7. data/include/grpc/impl/channel_arg_names.h +4 -0
  8. data/src/core/call/call_filters.h +10 -10
  9. data/src/core/{lib/security/authorization → call}/evaluate_args.cc +22 -1
  10. data/src/core/{lib/security/authorization → call}/evaluate_args.h +19 -5
  11. data/src/core/call/filter_fusion.h +15 -15
  12. data/src/core/call/interception_chain.h +3 -3
  13. data/src/core/call/metadata_batch.cc +1 -0
  14. data/src/core/call/metadata_batch.h +45 -33
  15. data/src/core/call/parsed_metadata.h +3 -3
  16. data/src/core/call/request_buffer.cc +6 -6
  17. data/src/core/call/request_buffer.h +1 -1
  18. data/src/core/channelz/channel_trace.cc +5 -5
  19. data/src/core/channelz/channel_trace.h +1 -1
  20. data/src/core/channelz/channelz.cc +9 -9
  21. data/src/core/channelz/channelz.h +12 -12
  22. data/src/core/channelz/channelz_registry.cc +10 -10
  23. data/src/core/channelz/ztrace_collector.h +5 -5
  24. data/src/core/client_channel/client_channel.cc +4 -4
  25. data/src/core/client_channel/client_channel_filter.cc +14 -14
  26. data/src/core/client_channel/global_subchannel_pool.cc +4 -4
  27. data/src/core/client_channel/subchannel.cc +24 -23
  28. data/src/core/client_channel/subchannel_stream_client.cc +5 -5
  29. data/src/core/credentials/call/external/aws_external_account_credentials.cc +7 -7
  30. data/src/core/credentials/call/external/aws_request_signer.cc +16 -0
  31. data/src/core/credentials/call/external/external_account_credentials.cc +4 -4
  32. data/src/core/credentials/call/regional_access_boundary_fetcher.cc +9 -9
  33. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +4 -4
  34. data/src/core/credentials/transport/google_default/google_default_credentials.cc +3 -3
  35. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +1 -1
  36. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +9 -9
  37. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +1 -1
  38. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +6 -6
  39. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +3 -3
  40. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +4 -4
  41. data/src/core/credentials/transport/tls/ssl_utils.cc +10 -0
  42. data/src/core/credentials/transport/tls/tls_security_connector.cc +10 -10
  43. data/src/core/credentials/transport/tls/tls_security_connector.h +6 -6
  44. data/src/core/credentials/transport/tls/tls_utils.h +9 -0
  45. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +1 -1
  46. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
  47. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
  48. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +1 -1
  49. data/src/core/ext/filters/http/message_compress/compression_filter.cc +15 -0
  50. data/src/core/ext/filters/rbac/rbac_filter.h +1 -1
  51. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +5 -5
  52. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +30 -21
  53. data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -11
  54. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +14 -11
  55. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
  56. data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -4
  57. data/src/core/ext/transport/chttp2/transport/frame.h +9 -0
  58. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -9
  59. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -2
  60. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +16 -18
  61. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +2 -1
  62. data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +277 -189
  63. data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +40 -17
  64. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +12 -24
  65. data/src/core/ext/transport/chttp2/transport/http2_transport.h +3 -29
  66. data/src/core/ext/transport/chttp2/transport/internal.h +2 -2
  67. data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
  68. data/src/core/ext/transport/chttp2/transport/read_context.h +96 -3
  69. data/src/core/ext/transport/chttp2/transport/reclaimer.cc +32 -0
  70. data/src/core/ext/transport/chttp2/transport/reclaimer.h +64 -0
  71. data/src/core/ext/transport/chttp2/transport/security_frame.h +8 -8
  72. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +17 -9
  73. data/src/core/ext/transport/chttp2/transport/write_cycle.h +23 -3
  74. data/src/core/ext/transport/inproc/inproc_transport.cc +5 -5
  75. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb.h +137 -73
  76. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb_minitable.c +45 -25
  77. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb.h +6 -6
  78. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.c +4 -4
  79. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.h +5 -5
  80. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb.h +46 -26
  81. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.c +17 -14
  82. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.h +5 -5
  83. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb.h +5 -5
  84. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.c +3 -3
  85. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.h +5 -5
  86. data/src/core/ext/upb-gen/grpc/health/v1/health.upb.h +329 -0
  87. data/src/core/ext/upb-gen/grpc/health/v1/health.upb_minitable.c +128 -0
  88. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/health/v1/health.upb_minitable.h +8 -5
  89. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb.h +5 -5
  90. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.c +3 -3
  91. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.h +5 -5
  92. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb.h +185 -23
  93. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.c +20 -12
  94. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.h +5 -5
  95. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb.h +58 -42
  96. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.c +17 -12
  97. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.h +5 -5
  98. data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +567 -549
  99. data/src/core/ext/upbdefs-gen/grpc/lookup/v1/rls_config.upbdefs.c +182 -0
  100. data/src/core/ext/upbdefs-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upbdefs.h +14 -14
  101. data/src/core/filter/ext_proc/ext_proc_filter.cc +1603 -46
  102. data/src/core/filter/ext_proc/ext_proc_filter.h +55 -22
  103. data/src/core/filter/ext_proc/ext_proc_messages.cc +106 -51
  104. data/src/core/filter/ext_proc/ext_proc_messages.h +36 -9
  105. data/src/core/handshaker/handshaker.cc +4 -4
  106. data/src/core/handshaker/http_connect/http_connect_client_handshaker.cc +3 -3
  107. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +10 -10
  108. data/src/core/handshaker/security/secure_endpoint.cc +13 -13
  109. data/src/core/handshaker/security/security_handshaker.cc +6 -6
  110. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +4 -4
  111. data/src/core/lib/channel/channel_args.cc +20 -0
  112. data/src/core/lib/channel/channel_args.h +17 -17
  113. data/src/core/lib/channel/promise_based_filter.cc +2 -2
  114. data/src/core/lib/channel/promise_based_filter.h +66 -27
  115. data/src/core/lib/debug/trace_flags.cc +2 -0
  116. data/src/core/lib/debug/trace_flags.h +1 -0
  117. data/src/core/lib/event_engine/ares_resolver.cc +14 -14
  118. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +7 -7
  119. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +4 -4
  120. data/src/core/lib/event_engine/default_event_engine.cc +5 -5
  121. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +9 -9
  122. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +16 -14
  123. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +6 -6
  124. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +3 -3
  125. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1 -1
  126. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +7 -7
  127. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +17 -17
  128. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +3 -3
  129. data/src/core/lib/event_engine/posix_engine/timer.cc +5 -5
  130. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +5 -5
  131. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +3 -3
  132. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +1 -1
  133. data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
  134. data/src/core/lib/event_engine/thread_pool/thread_count.h +3 -3
  135. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +50 -21
  136. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +3 -3
  137. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +3 -3
  138. data/src/core/lib/event_engine/windows/windows_engine.cc +15 -15
  139. data/src/core/lib/event_engine/windows/windows_listener.cc +6 -6
  140. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +6 -6
  141. data/src/core/lib/experiments/experiments.cc +48 -0
  142. data/src/core/lib/experiments/experiments.h +24 -0
  143. data/src/core/lib/iomgr/buffer_list.cc +3 -3
  144. data/src/core/lib/iomgr/buffer_list.h +1 -1
  145. data/src/core/lib/iomgr/combiner.cc +0 -1
  146. data/src/core/lib/iomgr/ev_apple.cc +4 -4
  147. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
  148. data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
  149. data/src/core/lib/iomgr/tcp_posix.cc +7 -7
  150. data/src/core/lib/promise/activity.cc +1 -1
  151. data/src/core/lib/promise/activity.h +1 -1
  152. data/src/core/lib/promise/arena_promise.h +7 -7
  153. data/src/core/lib/promise/detail/promise_factory.h +8 -8
  154. data/src/core/lib/promise/detail/promise_like.h +4 -4
  155. data/src/core/lib/promise/inter_activity_latch.h +6 -6
  156. data/src/core/lib/promise/inter_activity_pipe.h +1 -1
  157. data/src/core/lib/promise/observable.h +3 -3
  158. data/src/core/lib/promise/party.cc +1 -1
  159. data/src/core/lib/promise/try_seq.h +2 -2
  160. data/src/core/lib/resource_quota/arena.h +3 -3
  161. data/src/core/lib/resource_quota/memory_quota.cc +16 -16
  162. data/src/core/lib/resource_quota/memory_quota.h +1 -1
  163. data/src/core/lib/resource_quota/thread_quota.cc +3 -3
  164. data/src/core/lib/security/authorization/audit_logging.cc +5 -5
  165. data/src/core/lib/security/authorization/authorization_engine.h +1 -1
  166. data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -1
  167. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
  168. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  169. data/src/core/lib/security/authorization/matchers.h +1 -1
  170. data/src/core/lib/surface/call.cc +8 -7
  171. data/src/core/lib/surface/call.h +3 -3
  172. data/src/core/lib/surface/call_utils.h +4 -0
  173. data/src/core/lib/surface/channel.cc +1 -1
  174. data/src/core/lib/surface/channel.h +1 -1
  175. data/src/core/lib/surface/channel_init.cc +1 -1
  176. data/src/core/lib/surface/init.cc +7 -7
  177. data/src/core/lib/surface/lame_client.cc +1 -1
  178. data/src/core/lib/surface/legacy_channel.cc +2 -2
  179. data/src/core/lib/surface/version.cc +1 -1
  180. data/src/core/lib/transport/transport_framing_endpoint_extension.h +3 -3
  181. data/src/core/load_balancing/autosharding/autosharding.cc +931 -0
  182. data/src/core/load_balancing/autosharding/autosharding.h +78 -0
  183. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -2
  184. data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
  185. data/src/core/load_balancing/grpclb/load_balancer_api.h +3 -1
  186. data/src/core/load_balancing/health_check_client.cc +7 -7
  187. data/src/core/load_balancing/lb_policy.cc +1 -1
  188. data/src/core/load_balancing/oob_backend_metric.cc +5 -5
  189. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
  190. data/src/core/load_balancing/ring_hash/ring_hash.cc +109 -37
  191. data/src/core/load_balancing/rls/rls.cc +23 -17
  192. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +10 -10
  193. data/src/core/load_balancing/xds/cds.cc +6 -5
  194. data/src/core/load_balancing/xds/xds_cluster_impl.cc +2 -2
  195. data/src/core/load_balancing/xds/xds_override_host.cc +10 -10
  196. data/src/core/mitigation_engine/mitigation_engine.h +28 -4
  197. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -0
  198. data/src/core/resolver/dns/dns_resolver.cc +7 -7
  199. data/src/core/resolver/fake/fake_resolver.cc +5 -5
  200. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +38 -30
  201. data/src/core/server/server.cc +30 -30
  202. data/src/core/server/server.h +4 -3
  203. data/src/core/server/server_config_selector_filter.cc +3 -3
  204. data/src/core/server/xds_server_config_fetcher_legacy.cc +15 -15
  205. data/src/core/telemetry/default_tcp_tracer.cc +1 -1
  206. data/src/core/telemetry/instrument.cc +30 -16
  207. data/src/core/telemetry/instrument.h +3 -3
  208. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
  209. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -4
  210. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +2 -2
  211. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  212. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -1
  213. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +5 -5
  214. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +3 -3
  215. data/src/core/tsi/ssl_transport_security.cc +46 -13
  216. data/src/core/tsi/ssl_transport_security.h +7 -0
  217. data/src/core/tsi/ssl_transport_security_utils.cc +16 -6
  218. data/src/core/util/event_log.cc +3 -3
  219. data/src/core/util/http_client/httpcli.cc +5 -5
  220. data/src/core/util/http_client/httpcli.h +1 -1
  221. data/src/core/util/json/json_object_loader.cc +7 -0
  222. data/src/core/util/json/json_object_loader.h +17 -2
  223. data/src/core/util/latent_see.cc +123 -36
  224. data/src/core/util/latent_see.h +14 -1
  225. data/src/core/util/mpscq.cc +1 -1
  226. data/src/core/util/notification.h +4 -4
  227. data/src/core/util/sync.h +20 -6
  228. data/src/core/util/table.h +20 -22
  229. data/src/core/util/work_serializer.cc +2 -2
  230. data/src/core/xds/grpc/blackboard.cc +4 -3
  231. data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
  232. data/src/core/xds/grpc/streaming_call_promise_wrapper.cc +181 -0
  233. data/src/core/xds/grpc/streaming_call_promise_wrapper.h +213 -0
  234. data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +2 -2
  235. data/src/core/xds/grpc/xds_client_grpc.cc +8 -8
  236. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
  237. data/src/core/xds/grpc/xds_endpoint.cc +1 -1
  238. data/src/core/xds/grpc/xds_endpoint_parser.cc +11 -0
  239. data/src/core/xds/grpc/xds_grpc_service_parser.cc +12 -10
  240. data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +17 -14
  241. data/src/core/xds/grpc/xds_matcher.h +2 -2
  242. data/src/core/xds/grpc/xds_transport_grpc.cc +125 -85
  243. data/src/core/xds/grpc/xds_transport_grpc.h +19 -4
  244. data/src/core/xds/xds_client/lrs_client.cc +22 -19
  245. data/src/core/xds/xds_client/xds_client.cc +19 -16
  246. data/src/core/xds/xds_client/xds_transport.h +49 -3
  247. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  248. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
  249. data/src/ruby/lib/grpc/version.rb +1 -1
  250. data/src/ruby/pb/README.md +1 -1
  251. data/src/ruby/pb/generate_proto_ruby.sh +1 -1
  252. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +34 -2
  253. data/third_party/abseil-cpp/absl/algorithm/container.h +345 -147
  254. data/third_party/abseil-cpp/absl/base/attributes.h +67 -44
  255. data/third_party/abseil-cpp/absl/base/call_once.h +1 -0
  256. data/third_party/abseil-cpp/absl/base/casts.cc +61 -0
  257. data/third_party/abseil-cpp/absl/base/casts.h +135 -2
  258. data/third_party/abseil-cpp/absl/base/config.h +63 -41
  259. data/third_party/abseil-cpp/absl/base/fast_type_id.h +30 -2
  260. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
  261. data/third_party/abseil-cpp/absl/base/internal/hardening.h +136 -0
  262. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +6 -2
  263. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -4
  264. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
  265. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
  266. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
  267. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +26 -24
  268. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +74 -29
  269. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -11
  270. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
  271. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +5 -1
  272. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
  273. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
  274. data/third_party/abseil-cpp/absl/base/macros.h +76 -37
  275. data/third_party/abseil-cpp/absl/base/nullability.h +5 -5
  276. data/third_party/abseil-cpp/absl/base/optimization.h +4 -5
  277. data/third_party/abseil-cpp/absl/base/options.h +46 -18
  278. data/third_party/abseil-cpp/absl/base/policy_checks.h +5 -5
  279. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
  280. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
  281. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +7 -2
  282. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
  283. data/third_party/abseil-cpp/absl/container/btree_map.h +60 -10
  284. data/third_party/abseil-cpp/absl/container/btree_set.h +61 -15
  285. data/third_party/abseil-cpp/absl/container/fixed_array.h +19 -21
  286. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +49 -27
  287. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +50 -26
  288. data/third_party/abseil-cpp/absl/container/inlined_vector.h +42 -36
  289. data/third_party/abseil-cpp/absl/container/internal/btree.h +32 -24
  290. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +30 -22
  291. data/third_party/abseil-cpp/absl/container/internal/common.h +57 -5
  292. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
  293. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +40 -36
  294. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +119 -39
  295. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +14 -2
  296. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +14 -22
  297. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +52 -52
  298. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +7 -7
  299. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +7 -7
  300. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +32 -40
  301. data/third_party/abseil-cpp/absl/container/internal/layout.h +13 -13
  302. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +95 -72
  303. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +633 -365
  304. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1016 -749
  305. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +0 -1
  306. data/third_party/abseil-cpp/absl/container/node_hash_map.h +58 -35
  307. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +23 -6
  308. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
  309. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -6
  310. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
  311. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
  312. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
  313. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +304 -188
  314. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
  315. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
  316. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
  317. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
  318. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc +15 -1
  319. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -1
  320. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +12 -1
  321. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
  322. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -11
  323. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
  324. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
  325. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +6 -1
  326. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +14 -8
  327. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +48 -38
  328. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
  329. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +63 -118
  330. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +7 -47
  331. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +20 -2
  332. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +83 -149
  333. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
  334. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
  335. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
  336. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +8 -6
  337. data/third_party/abseil-cpp/absl/flags/declare.h +9 -0
  338. data/third_party/abseil-cpp/absl/flags/flag.h +2 -1
  339. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
  340. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +19 -18
  341. data/third_party/abseil-cpp/absl/flags/internal/flag.h +33 -34
  342. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
  343. data/third_party/abseil-cpp/absl/flags/marshalling.cc +1 -16
  344. data/third_party/abseil-cpp/absl/flags/marshalling.h +2 -28
  345. data/third_party/abseil-cpp/absl/flags/reflection.cc +11 -7
  346. data/third_party/abseil-cpp/absl/flags/usage_config.cc +2 -2
  347. data/third_party/abseil-cpp/absl/functional/any_invocable.h +22 -19
  348. data/third_party/abseil-cpp/absl/functional/bind_front.h +7 -1
  349. data/third_party/abseil-cpp/absl/functional/function_ref.h +125 -20
  350. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +43 -31
  351. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
  352. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +44 -6
  353. data/third_party/abseil-cpp/absl/hash/hash.h +1 -1
  354. data/third_party/abseil-cpp/absl/hash/internal/city.cc +39 -51
  355. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +379 -14
  356. data/third_party/abseil-cpp/absl/hash/internal/hash.h +457 -353
  357. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
  358. data/third_party/abseil-cpp/absl/log/internal/check_impl.h +2 -1
  359. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +4 -0
  360. data/third_party/abseil-cpp/absl/log/internal/check_op.h +128 -50
  361. data/third_party/abseil-cpp/absl/log/internal/conditions.h +38 -35
  362. data/third_party/abseil-cpp/absl/log/internal/log_impl.h +108 -110
  363. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +10 -6
  364. data/third_party/abseil-cpp/absl/log/internal/log_message.h +19 -1
  365. data/third_party/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
  366. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -1
  367. data/third_party/abseil-cpp/absl/log/internal/proto.cc +13 -0
  368. data/third_party/abseil-cpp/absl/log/internal/strip.h +30 -31
  369. data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
  370. data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
  371. data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +30 -30
  372. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
  373. data/third_party/abseil-cpp/absl/log/log.h +2 -2
  374. data/third_party/abseil-cpp/absl/log/log_entry.cc +263 -0
  375. data/third_party/abseil-cpp/absl/log/log_entry.h +2 -0
  376. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +0 -2
  377. data/third_party/abseil-cpp/absl/memory/memory.h +55 -5
  378. data/third_party/abseil-cpp/absl/meta/type_traits.h +161 -56
  379. data/third_party/abseil-cpp/absl/numeric/int128.h +41 -21
  380. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
  381. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
  382. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +32 -4
  383. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
  384. data/third_party/abseil-cpp/absl/random/beta_distribution.h +2 -2
  385. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
  386. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +1 -1
  387. data/third_party/abseil-cpp/absl/random/distributions.h +17 -17
  388. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -1
  389. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
  390. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.cc +2 -2
  391. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
  392. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
  393. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
  394. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
  395. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
  396. data/third_party/abseil-cpp/absl/random/internal/platform.h +0 -13
  397. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
  398. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
  399. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
  400. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +5 -31
  401. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +2 -1
  402. data/third_party/abseil-cpp/absl/random/internal/traits.h +21 -0
  403. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
  404. data/third_party/abseil-cpp/absl/random/mocking_access.h +74 -0
  405. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  406. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
  407. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +30 -4
  408. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +225 -63
  409. data/third_party/abseil-cpp/absl/status/status.cc +66 -70
  410. data/third_party/abseil-cpp/absl/status/status.h +254 -23
  411. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +3 -2
  412. data/third_party/abseil-cpp/absl/status/statusor.h +117 -137
  413. data/third_party/abseil-cpp/absl/strings/ascii.h +10 -6
  414. data/third_party/abseil-cpp/absl/strings/cord.cc +41 -17
  415. data/third_party/abseil-cpp/absl/strings/cord.h +26 -17
  416. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +4 -2
  417. data/third_party/abseil-cpp/absl/strings/escaping.cc +305 -125
  418. data/third_party/abseil-cpp/absl/strings/escaping.h +12 -2
  419. data/third_party/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
  420. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +2 -2
  421. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
  422. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +27 -21
  423. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +11 -19
  424. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
  425. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
  426. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
  427. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +2 -24
  428. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -36
  429. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
  430. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
  431. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
  432. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
  433. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +921 -231
  434. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -16
  435. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +16 -12
  436. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
  437. data/third_party/abseil-cpp/absl/strings/numbers.cc +477 -8
  438. data/third_party/abseil-cpp/absl/strings/numbers.h +29 -12
  439. data/third_party/abseil-cpp/absl/strings/resize_and_overwrite.h +198 -0
  440. data/third_party/abseil-cpp/absl/strings/str_cat.cc +96 -91
  441. data/third_party/abseil-cpp/absl/strings/str_cat.h +53 -13
  442. data/third_party/abseil-cpp/absl/strings/str_split.h +14 -9
  443. data/third_party/abseil-cpp/absl/strings/string_view.h +10 -716
  444. data/third_party/abseil-cpp/absl/strings/substitute.cc +24 -24
  445. data/third_party/abseil-cpp/absl/strings/substitute.h +2 -2
  446. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +1 -1
  447. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
  448. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +24 -3
  449. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
  450. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
  451. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
  452. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +41 -29
  453. data/third_party/abseil-cpp/absl/synchronization/mutex.h +199 -94
  454. data/third_party/abseil-cpp/absl/synchronization/notification.cc +5 -5
  455. data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
  456. data/third_party/abseil-cpp/absl/time/clock.cc +29 -30
  457. data/third_party/abseil-cpp/absl/time/clock.h +3 -0
  458. data/third_party/abseil-cpp/absl/time/duration.cc +2 -2
  459. data/third_party/abseil-cpp/absl/time/format.cc +3 -10
  460. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
  461. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +131 -91
  462. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
  463. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +185 -0
  464. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
  465. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
  466. data/third_party/abseil-cpp/absl/time/time.cc +4 -4
  467. data/third_party/abseil-cpp/absl/time/time.h +14 -13
  468. data/third_party/abseil-cpp/absl/types/compare.h +64 -63
  469. data/third_party/abseil-cpp/absl/types/internal/span.h +6 -6
  470. data/third_party/abseil-cpp/absl/types/optional.h +31 -4
  471. data/third_party/abseil-cpp/absl/types/optional_ref.h +295 -0
  472. data/third_party/{boringssl-with-bazel/crypto/x509/x_val.cc → abseil-cpp/absl/types/source_location.cc} +4 -14
  473. data/third_party/abseil-cpp/absl/types/source_location.h +172 -0
  474. data/third_party/abseil-cpp/absl/types/span.h +67 -38
  475. data/third_party/abseil-cpp/absl/types/variant.h +75 -18
  476. data/third_party/abseil-cpp/absl/utility/utility.h +112 -16
  477. data/third_party/boringssl-with-bazel/crypto/aes/aes.cc +3 -0
  478. data/third_party/boringssl-with-bazel/crypto/armv8_feature_parsing.h +67 -0
  479. data/third_party/boringssl-with-bazel/crypto/asn1/a_bitstr.cc +143 -105
  480. data/third_party/boringssl-with-bazel/crypto/asn1/a_bool.cc +5 -8
  481. data/third_party/boringssl-with-bazel/crypto/asn1/a_d2i_fp.cc +3 -3
  482. data/third_party/boringssl-with-bazel/crypto/asn1/a_dup.cc +6 -6
  483. data/third_party/boringssl-with-bazel/crypto/asn1/a_gentm.cc +33 -12
  484. data/third_party/boringssl-with-bazel/crypto/asn1/a_i2d_fp.cc +7 -6
  485. data/third_party/boringssl-with-bazel/crypto/asn1/a_int.cc +80 -52
  486. data/third_party/boringssl-with-bazel/crypto/asn1/a_mbstr.cc +7 -4
  487. data/third_party/boringssl-with-bazel/crypto/asn1/a_object.cc +70 -72
  488. data/third_party/boringssl-with-bazel/crypto/asn1/a_strex.cc +38 -42
  489. data/third_party/boringssl-with-bazel/crypto/asn1/a_strnid.cc +41 -39
  490. data/third_party/boringssl-with-bazel/crypto/asn1/a_time.cc +59 -35
  491. data/third_party/boringssl-with-bazel/crypto/asn1/a_type.cc +275 -15
  492. data/third_party/boringssl-with-bazel/crypto/asn1/a_utctm.cc +32 -13
  493. data/third_party/boringssl-with-bazel/crypto/asn1/asn1_lib.cc +128 -30
  494. data/third_party/boringssl-with-bazel/crypto/asn1/asn_pack.cc +10 -10
  495. data/third_party/boringssl-with-bazel/crypto/asn1/f_int.cc +1 -1
  496. data/third_party/boringssl-with-bazel/crypto/asn1/f_string.cc +1 -1
  497. data/third_party/boringssl-with-bazel/crypto/asn1/internal.h +261 -115
  498. data/third_party/boringssl-with-bazel/crypto/asn1/posix_time.cc +8 -5
  499. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_dec.cc +373 -725
  500. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_enc.cc +211 -526
  501. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_fre.cc +22 -19
  502. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_new.cc +26 -24
  503. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_typ.cc +19 -5
  504. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_utl.cc +47 -51
  505. data/third_party/boringssl-with-bazel/crypto/base64/base64.cc +14 -15
  506. data/third_party/boringssl-with-bazel/crypto/bcm_support.h +7 -29
  507. data/third_party/boringssl-with-bazel/crypto/bio/bio.cc +234 -176
  508. data/third_party/boringssl-with-bazel/crypto/bio/bio_mem.cc +72 -86
  509. data/third_party/boringssl-with-bazel/crypto/bio/connect.cc +153 -199
  510. data/third_party/boringssl-with-bazel/crypto/bio/errno.cc +3 -1
  511. data/third_party/boringssl-with-bazel/crypto/bio/fd.cc +56 -55
  512. data/third_party/boringssl-with-bazel/crypto/bio/file.cc +70 -78
  513. data/third_party/boringssl-with-bazel/crypto/bio/hexdump.cc +6 -4
  514. data/third_party/boringssl-with-bazel/crypto/bio/internal.h +69 -17
  515. data/third_party/boringssl-with-bazel/crypto/bio/pair.cc +117 -136
  516. data/third_party/boringssl-with-bazel/crypto/bio/printf.cc +1 -1
  517. data/third_party/boringssl-with-bazel/crypto/bio/socket.cc +116 -50
  518. data/third_party/boringssl-with-bazel/crypto/bio/socket_helper.cc +53 -5
  519. data/third_party/boringssl-with-bazel/crypto/blake2/blake2.cc +9 -5
  520. data/third_party/boringssl-with-bazel/crypto/bn/bn_asn1.cc +2 -2
  521. data/third_party/boringssl-with-bazel/crypto/bn/convert.cc +56 -70
  522. data/third_party/boringssl-with-bazel/crypto/bn/div.cc +102 -0
  523. data/third_party/boringssl-with-bazel/crypto/bn/exponentiation.cc +26 -42
  524. data/third_party/boringssl-with-bazel/crypto/bn/sqrt.cc +93 -0
  525. data/third_party/boringssl-with-bazel/crypto/buf/buf.cc +6 -5
  526. data/third_party/boringssl-with-bazel/crypto/bytestring/asn1_compat.cc +6 -5
  527. data/third_party/boringssl-with-bazel/crypto/bytestring/ber.cc +22 -20
  528. data/third_party/boringssl-with-bazel/crypto/bytestring/cbb.cc +119 -59
  529. data/third_party/boringssl-with-bazel/crypto/bytestring/cbs.cc +115 -31
  530. data/third_party/boringssl-with-bazel/crypto/bytestring/internal.h +79 -24
  531. data/third_party/boringssl-with-bazel/crypto/bytestring/unicode.cc +2 -2
  532. data/third_party/boringssl-with-bazel/crypto/chacha/chacha.cc +5 -3
  533. data/third_party/boringssl-with-bazel/crypto/chacha/internal.h +23 -22
  534. data/third_party/boringssl-with-bazel/crypto/cipher/derive_key.cc +14 -18
  535. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesctrhmac.cc +73 -58
  536. data/third_party/boringssl-with-bazel/crypto/cipher/e_aeseax.cc +132 -70
  537. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesgcmsiv.cc +390 -249
  538. data/third_party/boringssl-with-bazel/crypto/cipher/e_chacha20poly1305.cc +200 -137
  539. data/third_party/boringssl-with-bazel/crypto/cipher/e_des.cc +45 -29
  540. data/third_party/boringssl-with-bazel/crypto/cipher/e_null.cc +9 -5
  541. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc2.cc +43 -28
  542. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc4.cc +7 -5
  543. data/third_party/boringssl-with-bazel/crypto/cipher/e_tls.cc +250 -237
  544. data/third_party/boringssl-with-bazel/crypto/cipher/get_cipher.cc +12 -12
  545. data/third_party/boringssl-with-bazel/crypto/cipher/internal.h +59 -59
  546. data/third_party/boringssl-with-bazel/crypto/cipher/tls_cbc.cc +111 -111
  547. data/third_party/boringssl-with-bazel/crypto/cms/cms.cc +48 -42
  548. data/third_party/boringssl-with-bazel/crypto/conf/conf.cc +69 -63
  549. data/third_party/boringssl-with-bazel/crypto/conf/internal.h +11 -12
  550. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_apple.cc +8 -5
  551. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_fuchsia.cc +6 -1
  552. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_linux.cc +7 -1
  553. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_openbsd.cc +7 -21
  554. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_sysreg.cc +15 -41
  555. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_win.cc +16 -3
  556. data/third_party/boringssl-with-bazel/crypto/cpu_arm_freebsd.cc +4 -2
  557. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.cc +54 -31
  558. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.h +79 -101
  559. data/third_party/boringssl-with-bazel/crypto/cpu_intel.cc +51 -45
  560. data/third_party/boringssl-with-bazel/crypto/crypto.cc +26 -55
  561. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519.cc +28 -25
  562. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519_tables.h +6 -6
  563. data/third_party/boringssl-with-bazel/crypto/curve25519/internal.h +14 -15
  564. data/third_party/boringssl-with-bazel/crypto/curve25519/spake25519.cc +23 -20
  565. data/third_party/boringssl-with-bazel/crypto/des/des.cc +27 -19
  566. data/third_party/boringssl-with-bazel/crypto/des/internal.h +4 -9
  567. data/third_party/boringssl-with-bazel/crypto/dh/dh_asn1.cc +34 -49
  568. data/third_party/boringssl-with-bazel/crypto/dh/params.cc +44 -41
  569. data/third_party/boringssl-with-bazel/crypto/digest/digest_extra.cc +87 -40
  570. data/third_party/boringssl-with-bazel/crypto/dsa/dsa.cc +237 -260
  571. data/third_party/boringssl-with-bazel/crypto/dsa/dsa_asn1.cc +100 -173
  572. data/third_party/boringssl-with-bazel/crypto/dsa/internal.h +23 -21
  573. data/third_party/boringssl-with-bazel/crypto/ec/ec_asn1.cc +181 -209
  574. data/third_party/boringssl-with-bazel/crypto/ec/ec_derive.cc +26 -28
  575. data/third_party/boringssl-with-bazel/crypto/ec/hash_to_curve.cc +265 -174
  576. data/third_party/boringssl-with-bazel/crypto/ec/internal.h +54 -18
  577. data/third_party/boringssl-with-bazel/crypto/ecdh/ecdh.cc +7 -5
  578. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_asn1.cc +50 -70
  579. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_p1363.cc +54 -0
  580. data/third_party/boringssl-with-bazel/crypto/engine/engine.cc +7 -7
  581. data/third_party/boringssl-with-bazel/crypto/err/err.cc +116 -105
  582. data/third_party/boringssl-with-bazel/crypto/err/internal.h +8 -21
  583. data/third_party/boringssl-with-bazel/crypto/evp/evp.cc +238 -166
  584. data/third_party/boringssl-with-bazel/crypto/evp/evp_asn1.cc +202 -234
  585. data/third_party/boringssl-with-bazel/crypto/evp/evp_ctx.cc +260 -159
  586. data/third_party/boringssl-with-bazel/crypto/evp/evp_kem.cc +82 -0
  587. data/third_party/boringssl-with-bazel/crypto/evp/internal.h +292 -137
  588. data/third_party/boringssl-with-bazel/crypto/evp/p_dh.cc +198 -25
  589. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa.cc +333 -0
  590. data/third_party/boringssl-with-bazel/crypto/evp/p_ec.cc +427 -42
  591. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519.cc +270 -14
  592. data/third_party/boringssl-with-bazel/crypto/evp/p_hkdf.cc +70 -102
  593. data/third_party/boringssl-with-bazel/crypto/evp/p_mldsa.cc +549 -0
  594. data/third_party/boringssl-with-bazel/crypto/evp/p_mlkem.cc +485 -0
  595. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa.cc +666 -158
  596. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519.cc +290 -28
  597. data/third_party/boringssl-with-bazel/crypto/evp/p_xwing.cc +273 -0
  598. data/third_party/boringssl-with-bazel/crypto/evp/pbkdf.cc +14 -7
  599. data/third_party/boringssl-with-bazel/crypto/evp/print.cc +34 -89
  600. data/third_party/boringssl-with-bazel/crypto/evp/scrypt.cc +23 -21
  601. data/third_party/boringssl-with-bazel/crypto/evp/sign.cc +23 -42
  602. data/third_party/boringssl-with-bazel/crypto/ex_data.cc +40 -41
  603. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes.cc.inc +34 -28
  604. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes_nohw.cc.inc +119 -121
  605. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cbc.cc.inc +16 -14
  606. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cfb.cc.inc +12 -10
  607. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ctr.cc.inc +7 -5
  608. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm.cc.inc +39 -29
  609. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm_nohw.cc.inc +15 -13
  610. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/internal.h +193 -177
  611. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/key_wrap.cc.inc +5 -3
  612. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/mode_wrappers.cc.inc +7 -3
  613. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ofb.cc.inc +7 -5
  614. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm.cc +24 -19
  615. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm_interface.h +512 -384
  616. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/add.cc.inc +7 -5
  617. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +63 -44
  618. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bn.cc.inc +40 -37
  619. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bytes.cc.inc +27 -22
  620. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/cmp.cc.inc +9 -7
  621. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/ctx.cc.inc +62 -126
  622. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div.cc.inc +92 -167
  623. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div_extra.cc.inc +15 -12
  624. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/exponentiation.cc.inc +96 -93
  625. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd.cc.inc +73 -92
  626. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd_extra.cc.inc +59 -71
  627. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/generic.cc.inc +54 -57
  628. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/internal.h +333 -255
  629. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/jacobi.cc.inc +12 -19
  630. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery.cc.inc +80 -95
  631. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery_inv.cc.inc +53 -96
  632. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/mul.cc.inc +58 -419
  633. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/prime.cc.inc +164 -213
  634. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/random.cc.inc +27 -26
  635. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.cc.inc +12 -10
  636. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.h +47 -49
  637. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/shift.cc.inc +14 -17
  638. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/sqrt.cc.inc +19 -108
  639. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/aead.cc.inc +427 -105
  640. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/cipher.cc.inc +412 -212
  641. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aes.cc.inc +230 -225
  642. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aesccm.cc.inc +115 -84
  643. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/internal.h +374 -27
  644. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cmac/cmac.cc.inc +28 -23
  645. data/third_party/boringssl-with-bazel/crypto/fipsmodule/delocate.h +36 -40
  646. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/check.cc.inc +68 -78
  647. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/dh.cc.inc +154 -196
  648. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/internal.h +24 -24
  649. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digest.cc.inc +40 -69
  650. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digests.cc.inc +13 -7
  651. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/internal.h +13 -11
  652. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/md32_common.h +86 -81
  653. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digestsign/digestsign.cc.inc +38 -34
  654. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec.cc.inc +187 -196
  655. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_key.cc.inc +196 -154
  656. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_montgomery.cc.inc +65 -125
  657. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/felem.cc.inc +85 -22
  658. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/internal.h +281 -287
  659. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/oct.cc.inc +23 -22
  660. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256.cc.inc +514 -573
  661. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256_internal.h +193 -0
  662. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/scalar.cc.inc +44 -39
  663. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple.cc.inc +58 -90
  664. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple_mul.cc.inc +39 -34
  665. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/util.cc.inc +6 -3
  666. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/wnaf.cc.inc +23 -20
  667. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdh/ecdh.cc.inc +6 -3
  668. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +47 -37
  669. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/internal.h +5 -10
  670. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/internal.h +38 -0
  671. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/jitter.cc.inc +463 -0
  672. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
  673. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hkdf/hkdf.cc.inc +8 -6
  674. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hmac/hmac.cc.inc +19 -16
  675. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/internal.h +41 -15
  676. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/keccak.cc.inc +172 -44
  677. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/fips_known_values.inc +5 -5
  678. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/mldsa.cc.inc +1632 -766
  679. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/fips_known_values.inc +5 -5
  680. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/mlkem.cc.inc +740 -436
  681. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
  682. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/ctrdrbg.cc.inc +240 -53
  683. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/internal.h +41 -26
  684. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/rand.cc.inc +221 -218
  685. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/internal.h +64 -67
  686. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/padding.cc.inc +49 -57
  687. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa.cc.inc +247 -234
  688. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa_impl.cc.inc +392 -692
  689. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/fips.cc.inc +10 -10
  690. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/self_check.cc.inc +479 -449
  691. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/internal.h +34 -11
  692. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +46 -43
  693. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/internal.h +61 -70
  694. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha1.cc.inc +27 -13
  695. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha256.cc.inc +46 -30
  696. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha512.cc.inc +47 -47
  697. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/address.h +98 -73
  698. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.cc.inc +108 -98
  699. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.h +14 -24
  700. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.cc.inc +94 -91
  701. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.h +19 -31
  702. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/params.h +156 -56
  703. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +318 -132
  704. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.cc.inc +234 -81
  705. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.h +20 -34
  706. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.cc.inc +97 -96
  707. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.h +10 -20
  708. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/internal.h +2 -16
  709. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/kdf.cc.inc +26 -26
  710. data/third_party/boringssl-with-bazel/crypto/fuzzer_mode.cc +5 -5
  711. data/third_party/boringssl-with-bazel/crypto/hpke/hpke.cc +461 -97
  712. data/third_party/boringssl-with-bazel/crypto/hrss/hrss.cc +153 -149
  713. data/third_party/boringssl-with-bazel/crypto/hrss/internal.h +9 -13
  714. data/third_party/boringssl-with-bazel/crypto/internal.h +531 -394
  715. data/third_party/boringssl-with-bazel/crypto/kyber/internal.h +117 -12
  716. data/third_party/boringssl-with-bazel/crypto/kyber/kyber.cc +59 -58
  717. data/third_party/boringssl-with-bazel/crypto/lhash/internal.h +38 -37
  718. data/third_party/boringssl-with-bazel/crypto/lhash/lhash.cc +68 -65
  719. data/third_party/boringssl-with-bazel/crypto/md4/md4.cc +19 -6
  720. data/third_party/boringssl-with-bazel/crypto/md5/internal.h +6 -9
  721. data/third_party/boringssl-with-bazel/crypto/md5/md5.cc +18 -6
  722. data/third_party/boringssl-with-bazel/crypto/mem.cc +61 -65
  723. data/third_party/boringssl-with-bazel/crypto/mem_internal.h +671 -0
  724. data/third_party/boringssl-with-bazel/crypto/mldsa/mldsa.cc +238 -32
  725. data/third_party/boringssl-with-bazel/crypto/mlkem/mlkem.cc +21 -65
  726. data/third_party/boringssl-with-bazel/crypto/obj/obj.cc +132 -157
  727. data/third_party/boringssl-with-bazel/crypto/obj/obj_dat.h +79 -1
  728. data/third_party/boringssl-with-bazel/crypto/obj/obj_xref.cc +14 -11
  729. data/third_party/boringssl-with-bazel/crypto/params_internal.h +30 -0
  730. data/third_party/boringssl-with-bazel/crypto/pem/internal.h +20 -15
  731. data/third_party/boringssl-with-bazel/crypto/pem/pem_all.cc +20 -19
  732. data/third_party/boringssl-with-bazel/crypto/pem/pem_info.cc +72 -76
  733. data/third_party/boringssl-with-bazel/crypto/pem/pem_lib.cc +215 -217
  734. data/third_party/boringssl-with-bazel/crypto/pem/pem_oth.cc +6 -6
  735. data/third_party/boringssl-with-bazel/crypto/pem/pem_pk8.cc +13 -13
  736. data/third_party/boringssl-with-bazel/crypto/pem/pem_pkey.cc +11 -11
  737. data/third_party/boringssl-with-bazel/crypto/pkcs7/internal.h +12 -17
  738. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7.cc +29 -27
  739. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7_x509.cc +55 -49
  740. data/third_party/boringssl-with-bazel/crypto/pkcs8/internal.h +21 -26
  741. data/third_party/boringssl-with-bazel/crypto/pkcs8/p5_pbev2.cc +33 -31
  742. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8.cc +73 -81
  743. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8_x509.cc +139 -138
  744. data/third_party/boringssl-with-bazel/crypto/poly1305/internal.h +3 -7
  745. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305.cc +5 -4
  746. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_arm.cc +43 -47
  747. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_vec.cc +29 -26
  748. data/third_party/boringssl-with-bazel/crypto/pool/internal.h +64 -20
  749. data/third_party/boringssl-with-bazel/crypto/pool/pool.cc +177 -157
  750. data/third_party/boringssl-with-bazel/crypto/rand/deterministic.cc +9 -16
  751. data/third_party/boringssl-with-bazel/crypto/rand/fork_detect.cc +70 -42
  752. data/third_party/boringssl-with-bazel/crypto/rand/forkunsafe.cc +7 -7
  753. data/third_party/boringssl-with-bazel/crypto/rand/getentropy.cc +6 -13
  754. data/third_party/boringssl-with-bazel/crypto/rand/internal.h +16 -4
  755. data/third_party/boringssl-with-bazel/crypto/rand/ios.cc +4 -11
  756. data/third_party/boringssl-with-bazel/crypto/rand/rand.cc +11 -9
  757. data/third_party/boringssl-with-bazel/crypto/rand/trusty.cc +4 -11
  758. data/third_party/boringssl-with-bazel/crypto/rand/urandom.cc +16 -195
  759. data/third_party/boringssl-with-bazel/crypto/rand/windows.cc +12 -19
  760. data/third_party/boringssl-with-bazel/crypto/refcount.cc +7 -17
  761. data/third_party/boringssl-with-bazel/crypto/rsa/internal.h +22 -7
  762. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_asn1.cc +199 -78
  763. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_crypt.cc +49 -50
  764. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_extra.cc +11 -0
  765. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_print.cc +4 -6
  766. data/third_party/boringssl-with-bazel/crypto/sha/sha1.cc +3 -0
  767. data/third_party/boringssl-with-bazel/crypto/sha/sha256.cc +3 -1
  768. data/third_party/boringssl-with-bazel/crypto/sha/sha512.cc +6 -4
  769. data/third_party/boringssl-with-bazel/crypto/siphash/siphash.cc +2 -0
  770. data/third_party/boringssl-with-bazel/crypto/slhdsa/slhdsa.cc +43 -6
  771. data/third_party/boringssl-with-bazel/crypto/spake2plus/internal.h +31 -31
  772. data/third_party/boringssl-with-bazel/crypto/spake2plus/spake2plus.cc +1 -1
  773. data/third_party/boringssl-with-bazel/crypto/stack/stack.cc +89 -130
  774. data/third_party/boringssl-with-bazel/crypto/thread.cc +14 -14
  775. data/third_party/boringssl-with-bazel/crypto/thread_none.cc +10 -13
  776. data/third_party/boringssl-with-bazel/crypto/thread_pthread.cc +22 -35
  777. data/third_party/boringssl-with-bazel/crypto/thread_win.cc +29 -40
  778. data/third_party/boringssl-with-bazel/crypto/trust_token/internal.h +81 -88
  779. data/third_party/boringssl-with-bazel/crypto/trust_token/pmbtoken.cc +160 -144
  780. data/third_party/boringssl-with-bazel/crypto/trust_token/trust_token.cc +96 -80
  781. data/third_party/boringssl-with-bazel/crypto/trust_token/voprf.cc +90 -87
  782. data/third_party/boringssl-with-bazel/crypto/x509/a_digest.cc +5 -5
  783. data/third_party/boringssl-with-bazel/crypto/x509/a_sign.cc +51 -48
  784. data/third_party/boringssl-with-bazel/crypto/x509/a_verify.cc +30 -34
  785. data/third_party/boringssl-with-bazel/crypto/x509/algorithm.cc +47 -16
  786. data/third_party/boringssl-with-bazel/crypto/x509/asn1_gen.cc +41 -43
  787. data/third_party/boringssl-with-bazel/crypto/x509/by_dir.cc +183 -237
  788. data/third_party/boringssl-with-bazel/crypto/x509/by_file.cc +29 -30
  789. data/third_party/boringssl-with-bazel/crypto/x509/internal.h +276 -180
  790. data/third_party/boringssl-with-bazel/crypto/x509/name_print.cc +15 -13
  791. data/third_party/boringssl-with-bazel/crypto/x509/policy.cc +415 -525
  792. data/third_party/boringssl-with-bazel/crypto/x509/rsa_pss.cc +94 -271
  793. data/third_party/boringssl-with-bazel/crypto/x509/t_crl.cc +11 -8
  794. data/third_party/boringssl-with-bazel/crypto/x509/t_req.cc +26 -23
  795. data/third_party/boringssl-with-bazel/crypto/x509/t_x509.cc +26 -22
  796. data/third_party/boringssl-with-bazel/crypto/x509/t_x509a.cc +3 -1
  797. data/third_party/boringssl-with-bazel/crypto/x509/v3_akey.cc +69 -76
  798. data/third_party/boringssl-with-bazel/crypto/x509/v3_akeya.cc +2 -2
  799. data/third_party/boringssl-with-bazel/crypto/x509/v3_alt.cc +112 -69
  800. data/third_party/boringssl-with-bazel/crypto/x509/v3_bcons.cc +15 -14
  801. data/third_party/boringssl-with-bazel/crypto/x509/v3_bitst.cc +16 -18
  802. data/third_party/boringssl-with-bazel/crypto/x509/v3_conf.cc +62 -67
  803. data/third_party/boringssl-with-bazel/crypto/x509/v3_cpols.cc +143 -170
  804. data/third_party/boringssl-with-bazel/crypto/x509/v3_crld.cc +121 -165
  805. data/third_party/boringssl-with-bazel/crypto/x509/v3_enum.cc +13 -12
  806. data/third_party/boringssl-with-bazel/crypto/x509/v3_extku.cc +17 -34
  807. data/third_party/boringssl-with-bazel/crypto/x509/v3_genn.cc +20 -10
  808. data/third_party/boringssl-with-bazel/crypto/x509/v3_ia5.cc +22 -18
  809. data/third_party/boringssl-with-bazel/crypto/x509/v3_info.cc +45 -47
  810. data/third_party/boringssl-with-bazel/crypto/x509/v3_int.cc +35 -33
  811. data/third_party/boringssl-with-bazel/crypto/x509/v3_lib.cc +106 -61
  812. data/third_party/boringssl-with-bazel/crypto/x509/v3_ncons.cc +642 -358
  813. data/third_party/boringssl-with-bazel/crypto/x509/v3_ocsp.cc +25 -22
  814. data/third_party/boringssl-with-bazel/crypto/x509/v3_pcons.cc +15 -14
  815. data/third_party/boringssl-with-bazel/crypto/x509/v3_pmaps.cc +16 -15
  816. data/third_party/boringssl-with-bazel/crypto/x509/v3_prn.cc +6 -6
  817. data/third_party/boringssl-with-bazel/crypto/x509/v3_purp.cc +150 -137
  818. data/third_party/boringssl-with-bazel/crypto/x509/v3_skey.cc +23 -26
  819. data/third_party/boringssl-with-bazel/crypto/x509/v3_utl.cc +151 -178
  820. data/third_party/boringssl-with-bazel/crypto/x509/x509.cc +1 -1
  821. data/third_party/boringssl-with-bazel/crypto/x509/x509_att.cc +32 -30
  822. data/third_party/boringssl-with-bazel/crypto/x509/x509_cmp.cc +95 -88
  823. data/third_party/boringssl-with-bazel/crypto/x509/x509_d2.cc +9 -9
  824. data/third_party/boringssl-with-bazel/crypto/x509/x509_def.cc +6 -8
  825. data/third_party/boringssl-with-bazel/crypto/x509/x509_ext.cc +46 -24
  826. data/third_party/boringssl-with-bazel/crypto/x509/x509_lu.cc +211 -195
  827. data/third_party/boringssl-with-bazel/crypto/x509/x509_obj.cc +20 -16
  828. data/third_party/boringssl-with-bazel/crypto/x509/x509_req.cc +37 -46
  829. data/third_party/boringssl-with-bazel/crypto/x509/x509_set.cc +62 -90
  830. data/third_party/boringssl-with-bazel/crypto/x509/x509_trs.cc +18 -13
  831. data/third_party/boringssl-with-bazel/crypto/x509/x509_v3.cc +33 -33
  832. data/third_party/boringssl-with-bazel/crypto/x509/x509_vfy.cc +109 -110
  833. data/third_party/boringssl-with-bazel/crypto/x509/x509_vpm.cc +56 -47
  834. data/third_party/boringssl-with-bazel/crypto/x509/x509cset.cc +27 -40
  835. data/third_party/boringssl-with-bazel/crypto/x509/x509name.cc +77 -67
  836. data/third_party/boringssl-with-bazel/crypto/x509/x509rset.cc +5 -17
  837. data/third_party/boringssl-with-bazel/crypto/x509/x509spki.cc +13 -13
  838. data/third_party/boringssl-with-bazel/crypto/x509/x_algor.cc +131 -24
  839. data/third_party/boringssl-with-bazel/crypto/x509/x_all.cc +72 -39
  840. data/third_party/boringssl-with-bazel/crypto/x509/x_attrib.cc +10 -4
  841. data/third_party/boringssl-with-bazel/crypto/x509/x_crl.cc +77 -44
  842. data/third_party/boringssl-with-bazel/crypto/x509/x_exten.cc +6 -0
  843. data/third_party/boringssl-with-bazel/crypto/x509/x_name.cc +311 -383
  844. data/third_party/boringssl-with-bazel/crypto/x509/x_pubkey.cc +129 -82
  845. data/third_party/boringssl-with-bazel/crypto/x509/x_req.cc +11 -6
  846. data/third_party/boringssl-with-bazel/crypto/x509/x_sig.cc +4 -4
  847. data/third_party/boringssl-with-bazel/crypto/x509/x_spki.cc +11 -1
  848. data/third_party/boringssl-with-bazel/crypto/x509/x_x509.cc +285 -280
  849. data/third_party/boringssl-with-bazel/crypto/x509/x_x509a.cc +60 -60
  850. data/third_party/boringssl-with-bazel/crypto/xwing/xwing.cc +257 -0
  851. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +301 -0
  852. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +301 -0
  853. data/third_party/boringssl-with-bazel/gen/crypto/err_data.cc +526 -500
  854. data/third_party/boringssl-with-bazel/include/openssl/aead.h +286 -114
  855. data/third_party/boringssl-with-bazel/include/openssl/aes.h +43 -43
  856. data/third_party/boringssl-with-bazel/include/openssl/asm_base.h +29 -16
  857. data/third_party/boringssl-with-bazel/include/openssl/asn1.h +641 -631
  858. data/third_party/boringssl-with-bazel/include/openssl/asn1t.h +7 -9
  859. data/third_party/boringssl-with-bazel/include/openssl/base.h +34 -54
  860. data/third_party/boringssl-with-bazel/include/openssl/base64.h +30 -30
  861. data/third_party/boringssl-with-bazel/include/openssl/bio.h +373 -316
  862. data/third_party/boringssl-with-bazel/include/openssl/blake2.h +15 -11
  863. data/third_party/boringssl-with-bazel/include/openssl/blowfish.h +10 -3
  864. data/third_party/boringssl-with-bazel/include/openssl/bn.h +298 -306
  865. data/third_party/boringssl-with-bazel/include/openssl/buf.h +14 -14
  866. data/third_party/boringssl-with-bazel/include/openssl/bytestring.h +272 -207
  867. data/third_party/boringssl-with-bazel/include/openssl/cast.h +45 -8
  868. data/third_party/boringssl-with-bazel/include/openssl/chacha.h +3 -3
  869. data/third_party/boringssl-with-bazel/include/openssl/cipher.h +334 -152
  870. data/third_party/boringssl-with-bazel/include/openssl/cmac.h +13 -13
  871. data/third_party/boringssl-with-bazel/include/openssl/cms.h +35 -34
  872. data/third_party/boringssl-with-bazel/include/openssl/conf.h +15 -14
  873. data/third_party/boringssl-with-bazel/include/openssl/crypto.h +15 -13
  874. data/third_party/boringssl-with-bazel/include/openssl/ctrdrbg.h +49 -15
  875. data/third_party/boringssl-with-bazel/include/openssl/curve25519.h +24 -24
  876. data/third_party/boringssl-with-bazel/include/openssl/des.h +22 -16
  877. data/third_party/boringssl-with-bazel/include/openssl/dh.h +95 -95
  878. data/third_party/boringssl-with-bazel/include/openssl/digest.h +140 -71
  879. data/third_party/boringssl-with-bazel/include/openssl/dsa.h +101 -101
  880. data/third_party/boringssl-with-bazel/include/openssl/ec.h +143 -119
  881. data/third_party/boringssl-with-bazel/include/openssl/ec_key.h +97 -97
  882. data/third_party/boringssl-with-bazel/include/openssl/ecdh.h +9 -9
  883. data/third_party/boringssl-with-bazel/include/openssl/ecdsa.h +89 -46
  884. data/third_party/boringssl-with-bazel/include/openssl/engine.h +5 -5
  885. data/third_party/boringssl-with-bazel/include/openssl/err.h +73 -71
  886. data/third_party/boringssl-with-bazel/include/openssl/evp.h +824 -344
  887. data/third_party/boringssl-with-bazel/include/openssl/evp_errors.h +9 -2
  888. data/third_party/boringssl-with-bazel/include/openssl/ex_data.h +27 -32
  889. data/third_party/boringssl-with-bazel/include/openssl/hkdf.h +6 -6
  890. data/third_party/boringssl-with-bazel/include/openssl/hmac.h +31 -31
  891. data/third_party/boringssl-with-bazel/include/openssl/hpke.h +133 -117
  892. data/third_party/boringssl-with-bazel/include/openssl/hrss.h +14 -8
  893. data/third_party/boringssl-with-bazel/include/openssl/kdf.h +20 -19
  894. data/third_party/boringssl-with-bazel/include/openssl/lhash.h +4 -25
  895. data/third_party/boringssl-with-bazel/include/openssl/md4.h +14 -7
  896. data/third_party/boringssl-with-bazel/include/openssl/md5.h +7 -7
  897. data/third_party/boringssl-with-bazel/include/openssl/mem.h +38 -38
  898. data/third_party/boringssl-with-bazel/include/openssl/mldsa.h +380 -24
  899. data/third_party/boringssl-with-bazel/include/openssl/mlkem.h +43 -43
  900. data/third_party/boringssl-with-bazel/include/openssl/nid.h +1297 -2
  901. data/third_party/boringssl-with-bazel/include/openssl/obj.h +49 -49
  902. data/third_party/boringssl-with-bazel/include/openssl/opensslconf.h +30 -0
  903. data/third_party/boringssl-with-bazel/include/openssl/params.h +42 -0
  904. data/third_party/boringssl-with-bazel/include/openssl/pem.h +39 -30
  905. data/third_party/boringssl-with-bazel/include/openssl/pkcs7.h +40 -40
  906. data/third_party/boringssl-with-bazel/include/openssl/pkcs8.h +69 -63
  907. data/third_party/boringssl-with-bazel/include/openssl/poly1305.h +8 -5
  908. data/third_party/boringssl-with-bazel/include/openssl/pool.h +54 -25
  909. data/third_party/boringssl-with-bazel/include/openssl/posix_time.h +6 -6
  910. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols.h +7866 -0
  911. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_S.h +585 -0
  912. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_c.h +305 -0
  913. data/third_party/boringssl-with-bazel/include/openssl/rand.h +18 -18
  914. data/third_party/boringssl-with-bazel/include/openssl/rc4.h +4 -4
  915. data/third_party/boringssl-with-bazel/include/openssl/ripemd.h +15 -10
  916. data/third_party/boringssl-with-bazel/include/openssl/rsa.h +272 -235
  917. data/third_party/boringssl-with-bazel/include/openssl/service_indicator.h +4 -81
  918. data/third_party/boringssl-with-bazel/include/openssl/sha.h +43 -166
  919. data/third_party/boringssl-with-bazel/include/openssl/sha2.h +201 -0
  920. data/third_party/boringssl-with-bazel/include/openssl/slhdsa.h +100 -48
  921. data/third_party/boringssl-with-bazel/include/openssl/span.h +190 -75
  922. data/third_party/boringssl-with-bazel/include/openssl/ssl.h +2168 -1567
  923. data/third_party/boringssl-with-bazel/include/openssl/ssl3.h +11 -69
  924. data/third_party/boringssl-with-bazel/include/openssl/stack.h +135 -80
  925. data/third_party/boringssl-with-bazel/include/openssl/target.h +13 -1
  926. data/third_party/boringssl-with-bazel/include/openssl/thread.h +0 -10
  927. data/third_party/boringssl-with-bazel/include/openssl/tls1.h +31 -310
  928. data/third_party/boringssl-with-bazel/include/openssl/tls_prf.h +47 -0
  929. data/third_party/boringssl-with-bazel/include/openssl/trust_token.h +97 -92
  930. data/third_party/boringssl-with-bazel/include/openssl/type_check.h +1 -1
  931. data/third_party/boringssl-with-bazel/include/openssl/x509.h +1805 -1857
  932. data/third_party/boringssl-with-bazel/include/openssl/x509v3.h +1 -1
  933. data/third_party/boringssl-with-bazel/include/openssl/xwing.h +115 -0
  934. data/third_party/boringssl-with-bazel/ssl/bio_ssl.cc +24 -19
  935. data/third_party/boringssl-with-bazel/ssl/d1_both.cc +59 -57
  936. data/third_party/boringssl-with-bazel/ssl/d1_lib.cc +53 -42
  937. data/third_party/boringssl-with-bazel/ssl/d1_pkt.cc +4 -4
  938. data/third_party/boringssl-with-bazel/ssl/d1_srtp.cc +2 -2
  939. data/third_party/boringssl-with-bazel/ssl/dtls_method.cc +10 -10
  940. data/third_party/boringssl-with-bazel/ssl/dtls_record.cc +6 -6
  941. data/third_party/boringssl-with-bazel/ssl/encrypted_client_hello.cc +61 -71
  942. data/third_party/boringssl-with-bazel/ssl/extensions.cc +967 -366
  943. data/third_party/boringssl-with-bazel/ssl/handoff.cc +77 -38
  944. data/third_party/boringssl-with-bazel/ssl/handshake.cc +63 -30
  945. data/third_party/boringssl-with-bazel/ssl/handshake_client.cc +129 -85
  946. data/third_party/boringssl-with-bazel/ssl/handshake_server.cc +116 -68
  947. data/third_party/boringssl-with-bazel/ssl/internal.h +983 -1207
  948. data/third_party/boringssl-with-bazel/ssl/s3_both.cc +34 -29
  949. data/third_party/boringssl-with-bazel/ssl/s3_lib.cc +4 -3
  950. data/third_party/boringssl-with-bazel/ssl/s3_pkt.cc +12 -12
  951. data/third_party/boringssl-with-bazel/ssl/ssl_aead_ctx.cc +5 -5
  952. data/third_party/boringssl-with-bazel/ssl/ssl_asn1.cc +114 -59
  953. data/third_party/boringssl-with-bazel/ssl/ssl_buffer.cc +17 -18
  954. data/third_party/boringssl-with-bazel/ssl/ssl_cert.cc +99 -61
  955. data/third_party/boringssl-with-bazel/ssl/ssl_cipher.cc +143 -134
  956. data/third_party/boringssl-with-bazel/ssl/ssl_credential.cc +188 -90
  957. data/third_party/boringssl-with-bazel/ssl/ssl_file.cc +132 -225
  958. data/third_party/boringssl-with-bazel/ssl/ssl_key_share.cc +79 -7
  959. data/third_party/boringssl-with-bazel/ssl/ssl_lib.cc +698 -302
  960. data/third_party/boringssl-with-bazel/ssl/ssl_privkey.cc +102 -45
  961. data/third_party/boringssl-with-bazel/ssl/ssl_session.cc +117 -102
  962. data/third_party/boringssl-with-bazel/ssl/ssl_transcript.cc +3 -3
  963. data/third_party/boringssl-with-bazel/ssl/ssl_versions.cc +24 -24
  964. data/third_party/boringssl-with-bazel/ssl/ssl_x509.cc +184 -170
  965. data/third_party/boringssl-with-bazel/ssl/t1_enc.cc +12 -10
  966. data/third_party/boringssl-with-bazel/ssl/tls13_both.cc +86 -54
  967. data/third_party/boringssl-with-bazel/ssl/tls13_client.cc +176 -90
  968. data/third_party/boringssl-with-bazel/ssl/tls13_enc.cc +166 -112
  969. data/third_party/boringssl-with-bazel/ssl/tls13_server.cc +188 -97
  970. data/third_party/boringssl-with-bazel/ssl/tls_method.cc +23 -23
  971. data/third_party/boringssl-with-bazel/ssl/tls_record.cc +17 -14
  972. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
  973. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
  974. data/third_party/boringssl-with-bazel/third_party/fiat/curve25519_64_adx.h +37 -33
  975. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64.h +4 -93
  976. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64_msvc.h +4 -69
  977. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_32.br.c.inc +71 -0
  978. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_64.br.c.inc +84 -0
  979. data/third_party/boringssl-with-bazel/third_party/fiat/p256_point.br.c.inc +166 -0
  980. metadata +77 -52
  981. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +0 -240
  982. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +0 -56
  983. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +0 -157
  984. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +0 -72
  985. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +0 -181
  986. data/third_party/abseil-cpp/absl/base/internal/identity.h +0 -39
  987. data/third_party/abseil-cpp/absl/base/internal/nullability_deprecated.h +0 -106
  988. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -105
  989. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -50
  990. data/third_party/abseil-cpp/absl/strings/string_view.cc +0 -257
  991. data/third_party/boringssl-with-bazel/crypto/evp/p_dh_asn1.cc +0 -142
  992. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa_asn1.cc +0 -279
  993. data/third_party/boringssl-with-bazel/crypto/evp/p_ec_asn1.cc +0 -286
  994. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519_asn1.cc +0 -225
  995. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa_asn1.cc +0 -198
  996. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519_asn1.cc +0 -237
  997. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p224-64.cc.inc +0 -1163
  998. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.cc.inc +0 -741
  999. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.h +0 -207
  1000. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/blinding.cc.inc +0 -147
  1001. data/third_party/boringssl-with-bazel/crypto/rand/getrandom_fillin.h +0 -64
  1002. data/third_party/boringssl-with-bazel/crypto/rand/passive.cc +0 -178
  1003. data/third_party/boringssl-with-bazel/crypto/x509/ext_dat.h +0 -92
  1004. data/third_party/boringssl-with-bazel/include/openssl/bcm_public.h +0 -82
  1005. 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