/* * SPDX-FileCopyrightText: 2026 CE Labs * * SPDX-License-Identifier: MIT or Apache-2.0 * * This code was generated with the following revisions: * Charon: e656e17bff6ca5efac8ab6919b9b74cb9a8dd8ad * Eurydice: aaa9fa657fb6f09802edb890252040d94cd93982 * Karamel: 8c19d41458ce5cbfea029ebc03334ba96d149039 * F*: 70671ffb81fa30aba09b9d6e2af275dfbccaa8f8 * Libcrux: 10066f256cec8d50d6111a4cf33ab920cfdb96cb */ #ifndef libcrux_mldsa_portable_H #define libcrux_mldsa_portable_H #include "eurydice_glue.h" #if defined(__cplusplus) extern "C" { #endif #include "libcrux_sha3_portable.h" #include "libcrux_mldsa_core.h" #include "combined_core.h" typedef struct libcrux_ml_dsa_hash_functions_portable_Shake128X4_s { Eurydice_arr_7c state0; Eurydice_arr_7c state1; Eurydice_arr_7c state2; Eurydice_arr_7c state3; } libcrux_ml_dsa_hash_functions_portable_Shake128X4; typedef libcrux_sha3_portable_KeccakState libcrux_ml_dsa_hash_functions_portable_Shake256; typedef struct libcrux_ml_dsa_hash_functions_portable_Shake256X4_s { Eurydice_arr_7c state0; Eurydice_arr_7c state1; Eurydice_arr_7c state2; Eurydice_arr_7c state3; } libcrux_ml_dsa_hash_functions_portable_Shake256X4; typedef libcrux_sha3_portable_incremental_Shake256Xof libcrux_ml_dsa_hash_functions_portable_Shake256Xof; libcrux_ml_dsa_hash_functions_portable_Shake128X4 libcrux_ml_dsa_hash_functions_portable_init_absorb( Eurydice_borrow_slice_u8 input0, Eurydice_borrow_slice_u8 input1, Eurydice_borrow_slice_u8 input2, Eurydice_borrow_slice_u8 input3 ); Eurydice_arr_7c libcrux_ml_dsa_hash_functions_portable_init_absorb_final_shake256( Eurydice_borrow_slice_u8 input ); libcrux_ml_dsa_hash_functions_portable_Shake256X4 libcrux_ml_dsa_hash_functions_portable_init_absorb_x4( Eurydice_borrow_slice_u8 input0, Eurydice_borrow_slice_u8 input1, Eurydice_borrow_slice_u8 input2, Eurydice_borrow_slice_u8 input3 ); void libcrux_ml_dsa_hash_functions_portable_shake128( Eurydice_borrow_slice_u8 input, Eurydice_mut_borrow_slice_u8 out ); Eurydice_arr_ff libcrux_ml_dsa_hash_functions_portable_squeeze_first_block_shake256(Eurydice_arr_7c *state); Eurydice_arr_ff_x4 libcrux_ml_dsa_hash_functions_portable_squeeze_first_block_x4( libcrux_ml_dsa_hash_functions_portable_Shake256X4 *state ); void libcrux_ml_dsa_hash_functions_portable_squeeze_first_five_blocks( libcrux_ml_dsa_hash_functions_portable_Shake128X4 *state, Eurydice_arr_d10 *out0, Eurydice_arr_d10 *out1, Eurydice_arr_d10 *out2, Eurydice_arr_d10 *out3 ); Eurydice_arr_c5_x4 libcrux_ml_dsa_hash_functions_portable_squeeze_next_block( libcrux_ml_dsa_hash_functions_portable_Shake128X4 *state ); Eurydice_arr_ff libcrux_ml_dsa_hash_functions_portable_squeeze_next_block_shake256(Eurydice_arr_7c *state); Eurydice_arr_ff_x4 libcrux_ml_dsa_hash_functions_portable_squeeze_next_block_x4( libcrux_ml_dsa_hash_functions_portable_Shake256X4 *state ); /** This function found in impl {libcrux_ml_dsa::hash_functions::shake128::Xof for libcrux_ml_dsa::hash_functions::portable::Shake128} */ void libcrux_ml_dsa_hash_functions_portable_shake128_7b( Eurydice_borrow_slice_u8 input, Eurydice_mut_borrow_slice_u8 out ); /** This function found in impl {libcrux_ml_dsa::hash_functions::shake128::XofX4 for libcrux_ml_dsa::hash_functions::portable::Shake128X4} */ libcrux_ml_dsa_hash_functions_portable_Shake128X4 libcrux_ml_dsa_hash_functions_portable_init_absorb_11( Eurydice_borrow_slice_u8 input0, Eurydice_borrow_slice_u8 input1, Eurydice_borrow_slice_u8 input2, Eurydice_borrow_slice_u8 input3 ); /** This function found in impl {libcrux_ml_dsa::hash_functions::shake128::XofX4 for libcrux_ml_dsa::hash_functions::portable::Shake128X4} */ void libcrux_ml_dsa_hash_functions_portable_squeeze_first_five_blocks_11( libcrux_ml_dsa_hash_functions_portable_Shake128X4 *self, Eurydice_arr_d10 *out0, Eurydice_arr_d10 *out1, Eurydice_arr_d10 *out2, Eurydice_arr_d10 *out3 ); /** This function found in impl {libcrux_ml_dsa::hash_functions::shake128::XofX4 for libcrux_ml_dsa::hash_functions::portable::Shake128X4} */ Eurydice_arr_c5_x4 libcrux_ml_dsa_hash_functions_portable_squeeze_next_block_11( libcrux_ml_dsa_hash_functions_portable_Shake128X4 *self ); /** This function found in impl {libcrux_ml_dsa::hash_functions::shake256::DsaXof for libcrux_ml_dsa::hash_functions::portable::Shake256} */ Eurydice_arr_7c libcrux_ml_dsa_hash_functions_portable_init_absorb_final_61(Eurydice_borrow_slice_u8 input); /** This function found in impl {libcrux_ml_dsa::hash_functions::shake256::DsaXof for libcrux_ml_dsa::hash_functions::portable::Shake256} */ Eurydice_arr_ff libcrux_ml_dsa_hash_functions_portable_squeeze_first_block_61(Eurydice_arr_7c *self); /** This function found in impl {libcrux_ml_dsa::hash_functions::shake256::DsaXof for libcrux_ml_dsa::hash_functions::portable::Shake256} */ Eurydice_arr_ff libcrux_ml_dsa_hash_functions_portable_squeeze_next_block_61(Eurydice_arr_7c *self); /** This function found in impl {libcrux_ml_dsa::hash_functions::shake256::Xof for libcrux_ml_dsa::hash_functions::portable::Shake256Xof} */ void libcrux_ml_dsa_hash_functions_portable_absorb_26( libcrux_sha3_generic_keccak_xof_KeccakXofState_8d *self, Eurydice_borrow_slice_u8 input ); /** This function found in impl {libcrux_ml_dsa::hash_functions::shake256::Xof for libcrux_ml_dsa::hash_functions::portable::Shake256Xof} */ void libcrux_ml_dsa_hash_functions_portable_absorb_final_26( libcrux_sha3_generic_keccak_xof_KeccakXofState_8d *self, Eurydice_borrow_slice_u8 input ); /** This function found in impl {libcrux_ml_dsa::hash_functions::shake256::Xof for libcrux_ml_dsa::hash_functions::portable::Shake256Xof} */ libcrux_sha3_generic_keccak_xof_KeccakXofState_8d libcrux_ml_dsa_hash_functions_portable_init_26(void); /** This function found in impl {libcrux_ml_dsa::hash_functions::shake256::Xof for libcrux_ml_dsa::hash_functions::portable::Shake256Xof} */ void libcrux_ml_dsa_hash_functions_portable_squeeze_26( libcrux_sha3_generic_keccak_xof_KeccakXofState_8d *self, Eurydice_mut_borrow_slice_u8 out ); /** This function found in impl {libcrux_ml_dsa::hash_functions::shake256::XofX4 for libcrux_ml_dsa::hash_functions::portable::Shake256X4} */ libcrux_ml_dsa_hash_functions_portable_Shake256X4 libcrux_ml_dsa_hash_functions_portable_init_absorb_x4_9b( Eurydice_borrow_slice_u8 input0, Eurydice_borrow_slice_u8 input1, Eurydice_borrow_slice_u8 input2, Eurydice_borrow_slice_u8 input3 ); /** This function found in impl {libcrux_ml_dsa::hash_functions::shake256::XofX4 for libcrux_ml_dsa::hash_functions::portable::Shake256X4} */ Eurydice_arr_ff_x4 libcrux_ml_dsa_hash_functions_portable_squeeze_first_block_x4_9b( libcrux_ml_dsa_hash_functions_portable_Shake256X4 *self ); /** This function found in impl {libcrux_ml_dsa::hash_functions::shake256::XofX4 for libcrux_ml_dsa::hash_functions::portable::Shake256X4} */ Eurydice_arr_ff_x4 libcrux_ml_dsa_hash_functions_portable_squeeze_next_block_x4_9b( libcrux_ml_dsa_hash_functions_portable_Shake256X4 *self ); /** A monomorphic instance of libcrux_ml_dsa.sample.sample_four_error_ring_elements with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_hash_functions_portable_Shake256X4 with const generics */ void libcrux_ml_dsa_sample_sample_four_error_ring_elements_29( libcrux_ml_dsa_constants_Eta eta, Eurydice_borrow_slice_u8 seed, uint16_t start_index, Eurydice_dst_ref_mut_44 re ); /** A monomorphic instance of libcrux_ml_dsa.samplex4.sample_s1_and_s2 with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_hash_functions_portable_Shake256X4 with const generics */ void libcrux_ml_dsa_samplex4_sample_s1_and_s2_29( libcrux_ml_dsa_constants_Eta eta, Eurydice_borrow_slice_u8 seed, Eurydice_dst_ref_mut_44 s1_s2 ); /** Sample and write out up to four ring elements. If i <= `elements_requested`, a field element with domain separated seed according to the provided index is generated in `tmp_stack[i]`. After successful rejection sampling in `tmp_stack[i]`, the ring element is written to `matrix` at the provided index in `indices[i]`. `rand_stack` is a working buffer that holds initial Shake output. */ /** A monomorphic instance of libcrux_ml_dsa.sample.sample_up_to_four_ring_elements_flat with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_hash_functions_portable_Shake128X4 with const generics */ void libcrux_ml_dsa_sample_sample_up_to_four_ring_elements_flat_63( size_t columns, Eurydice_borrow_slice_u8 seed, Eurydice_dst_ref_mut_44 matrix, Eurydice_arr_d10 *rand_stack0, Eurydice_arr_d10 *rand_stack1, Eurydice_arr_d10 *rand_stack2, Eurydice_arr_d10 *rand_stack3, Eurydice_dst_ref_mut_33 tmp_stack, size_t start_index, size_t elements_requested ); /** A monomorphic instance of libcrux_ml_dsa.samplex4.matrix_flat with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_hash_functions_portable_Shake128X4 with const generics */ void libcrux_ml_dsa_samplex4_matrix_flat_63( size_t columns, Eurydice_borrow_slice_u8 seed, Eurydice_dst_ref_mut_44 matrix ); /** This function found in impl {libcrux_ml_dsa::samplex4::X4Sampler for libcrux_ml_dsa::samplex4::portable::PortableSampler} */ /** A monomorphic instance of libcrux_ml_dsa.samplex4.portable.matrix_flat_a8 with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients with const generics */ void libcrux_ml_dsa_samplex4_portable_matrix_flat_a8_37( size_t columns, Eurydice_borrow_slice_u8 seed, Eurydice_dst_ref_mut_44 matrix ); /** A monomorphic instance of libcrux_ml_dsa.hash_functions.portable.shake256 with const generics - OUTPUT_LENGTH= 64 */ void libcrux_ml_dsa_hash_functions_portable_shake256_c9( Eurydice_borrow_slice_u8 input, Eurydice_arr_c7 *out ); /** This function found in impl {libcrux_ml_dsa::hash_functions::shake256::DsaXof for libcrux_ml_dsa::hash_functions::portable::Shake256} */ /** A monomorphic instance of libcrux_ml_dsa.hash_functions.portable.shake256_61 with const generics - OUTPUT_LENGTH= 64 */ void libcrux_ml_dsa_hash_functions_portable_shake256_61_c9( Eurydice_borrow_slice_u8 input, Eurydice_arr_c7 *out ); /** A monomorphic instance of libcrux_ml_dsa.encoding.signing_key.generate_serialized with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_hash_functions_portable_Shake256 with const generics */ void libcrux_ml_dsa_encoding_signing_key_generate_serialized_2e( libcrux_ml_dsa_constants_Eta eta, size_t error_ring_element_size, Eurydice_borrow_slice_u8 seed_matrix, Eurydice_borrow_slice_u8 seed_signing, Eurydice_borrow_slice_u8 verification_key, Eurydice_dst_ref_shared_44 s1_2, Eurydice_dst_ref_shared_44 t0, Eurydice_mut_borrow_slice_u8 signing_key_serialized ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_44.generate_key_pair with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_hash_functions_portable_Shake256X4 with const generics */ void libcrux_ml_dsa_ml_dsa_generic_ml_dsa_44_generate_key_pair_5a( Eurydice_arr_ec randomness, Eurydice_mut_borrow_slice_u8 signing_key, Eurydice_mut_borrow_slice_u8 verification_key ); /** Generate key pair. */ void libcrux_ml_dsa_ml_dsa_generic_instantiations_portable_ml_dsa_44_generate_key_pair( Eurydice_arr_ec randomness, Eurydice_arr_10 *signing_key, Eurydice_arr_02 *verification_key ); /** This corresponds to line 6 in algorithm 7 in FIPS 204 (line 7 in algorithm 8, resp.). If `domain_separation_context` is supplied, applies domain separation and length encoding to the context string, before appending the message (in the regular variant) or the pre-hash OID as well as the pre-hashed message digest. Otherwise, it is assumed that `message` already contains domain separation information. In FIPS 204 M' is the concatenation of the domain separated context, any potential pre-hash OID and the message (or the message pre-hash). We do not explicitely construct the concatenation in memory since it is of statically unknown length, but feed its components directly into the incremental XOF. Refer to line 10 of Algorithm 2 (and line 5 of Algorithm 3, resp.) in [FIPS 204](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.204.pdf#section.5) for details on the domain separation for regular ML-DSA. Line 23 of Algorithm 4 (and line 18 of Algorithm 5,resp.) describe domain separation for the HashMl-DSA variant. */ /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.derive_message_representative with types libcrux_ml_dsa_hash_functions_portable_Shake256Xof with const generics */ void libcrux_ml_dsa_ml_dsa_generic_derive_message_representative_43( Eurydice_borrow_slice_u8 verification_key_hash, const core_option_Option_84 *domain_separation_context, Eurydice_borrow_slice_u8 message, Eurydice_arr_c7 *message_representative ); /** A monomorphic instance of libcrux_ml_dsa.hash_functions.portable.shake256 with const generics - OUTPUT_LENGTH= 576 */ void libcrux_ml_dsa_hash_functions_portable_shake256_5a( Eurydice_borrow_slice_u8 input, Eurydice_arr_220 *out ); /** This function found in impl {libcrux_ml_dsa::hash_functions::shake256::XofX4 for libcrux_ml_dsa::hash_functions::portable::Shake256X4} */ /** A monomorphic instance of libcrux_ml_dsa.hash_functions.portable.shake256_x4_9b with const generics - OUT_LEN= 576 */ void libcrux_ml_dsa_hash_functions_portable_shake256_x4_9b_5a( Eurydice_borrow_slice_u8 input0, Eurydice_borrow_slice_u8 input1, Eurydice_borrow_slice_u8 input2, Eurydice_borrow_slice_u8 input3, Eurydice_arr_220 *out0, Eurydice_arr_220 *out1, Eurydice_arr_220 *out2, Eurydice_arr_220 *out3 ); /** A monomorphic instance of libcrux_ml_dsa.hash_functions.portable.shake256 with const generics - OUTPUT_LENGTH= 640 */ void libcrux_ml_dsa_hash_functions_portable_shake256_0e( Eurydice_borrow_slice_u8 input, Eurydice_arr_20 *out ); /** This function found in impl {libcrux_ml_dsa::hash_functions::shake256::XofX4 for libcrux_ml_dsa::hash_functions::portable::Shake256X4} */ /** A monomorphic instance of libcrux_ml_dsa.hash_functions.portable.shake256_x4_9b with const generics - OUT_LEN= 640 */ void libcrux_ml_dsa_hash_functions_portable_shake256_x4_9b_0e( Eurydice_borrow_slice_u8 input0, Eurydice_borrow_slice_u8 input1, Eurydice_borrow_slice_u8 input2, Eurydice_borrow_slice_u8 input3, Eurydice_arr_20 *out0, Eurydice_arr_20 *out1, Eurydice_arr_20 *out2, Eurydice_arr_20 *out3 ); /** This function found in impl {libcrux_ml_dsa::hash_functions::shake256::DsaXof for libcrux_ml_dsa::hash_functions::portable::Shake256} */ /** A monomorphic instance of libcrux_ml_dsa.hash_functions.portable.shake256_61 with const generics - OUTPUT_LENGTH= 640 */ void libcrux_ml_dsa_hash_functions_portable_shake256_61_0e( Eurydice_borrow_slice_u8 input, Eurydice_arr_20 *out ); /** This function found in impl {libcrux_ml_dsa::hash_functions::shake256::DsaXof for libcrux_ml_dsa::hash_functions::portable::Shake256} */ /** A monomorphic instance of libcrux_ml_dsa.hash_functions.portable.shake256_61 with const generics - OUTPUT_LENGTH= 576 */ void libcrux_ml_dsa_hash_functions_portable_shake256_61_5a( Eurydice_borrow_slice_u8 input, Eurydice_arr_220 *out ); /** A monomorphic instance of libcrux_ml_dsa.sample.sample_mask_ring_element with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_hash_functions_portable_Shake256 with const generics */ void libcrux_ml_dsa_sample_sample_mask_ring_element_2e( const Eurydice_arr_91 *seed, Eurydice_arr_a3 *result, size_t gamma1_exponent ); /** A monomorphic instance of libcrux_ml_dsa.sample.sample_mask_vector with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256X4 with const generics */ void libcrux_ml_dsa_sample_sample_mask_vector_67( size_t dimension, size_t gamma1_exponent, const Eurydice_arr_c7 *seed, uint16_t *domain_separator, Eurydice_dst_ref_mut_44 mask ); /** A monomorphic instance of libcrux_ml_dsa.sample.sample_challenge_ring_element with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_hash_functions_portable_Shake256 with const generics */ void libcrux_ml_dsa_sample_sample_challenge_ring_element_2e( Eurydice_borrow_slice_u8 seed, size_t number_of_ones, Eurydice_arr_a3 *re ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_44.sign_internal with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_hash_functions_portable_Shake256X4 with const generics */ core_result_Result_53 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_44_sign_internal_5a( Eurydice_borrow_slice_u8 signing_key, Eurydice_borrow_slice_u8 message, core_option_Option_84 domain_separation_context, Eurydice_arr_ec randomness, Eurydice_arr_85 *signature ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_44.sign_mut with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_hash_functions_portable_Shake256X4 with const generics */ core_result_Result_53 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_44_sign_mut_5a( Eurydice_borrow_slice_u8 signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_arr_ec randomness, Eurydice_arr_85 *signature ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_44.sign with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_hash_functions_portable_Shake256X4 with const generics */ core_result_Result_48 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_44_sign_5a( Eurydice_borrow_slice_u8 signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_arr_ec randomness ); /** Sign. */ core_result_Result_48 libcrux_ml_dsa_ml_dsa_generic_instantiations_portable_ml_dsa_44_sign( const Eurydice_arr_10 *signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_arr_ec randomness ); /** Sign. */ core_result_Result_53 libcrux_ml_dsa_ml_dsa_generic_instantiations_portable_ml_dsa_44_sign_mut( const Eurydice_arr_10 *signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_arr_ec randomness, Eurydice_arr_85 *signature ); /** This function found in impl {libcrux_ml_dsa::pre_hash::PreHash for libcrux_ml_dsa::pre_hash::SHAKE128_PH} */ /** A monomorphic instance of libcrux_ml_dsa.pre_hash.hash_30 with types libcrux_ml_dsa_hash_functions_portable_Shake128 with const generics */ void libcrux_ml_dsa_pre_hash_hash_30_83( Eurydice_borrow_slice_u8 message, Eurydice_mut_borrow_slice_u8 output ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_44.sign_pre_hashed_mut with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_hash_functions_portable_Shake256X4, libcrux_ml_dsa_pre_hash_SHAKE128_PH with const generics */ core_result_Result_53 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_44_sign_pre_hashed_mut_3f( Eurydice_borrow_slice_u8 signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_mut_borrow_slice_u8 pre_hash_buffer, Eurydice_arr_ec randomness, Eurydice_arr_85 *signature ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_44.sign_pre_hashed with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_hash_functions_portable_Shake256X4, libcrux_ml_dsa_pre_hash_SHAKE128_PH with const generics */ core_result_Result_48 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_44_sign_pre_hashed_3f( Eurydice_borrow_slice_u8 signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_mut_borrow_slice_u8 pre_hash_buffer, Eurydice_arr_ec randomness ); /** Sign (pre-hashed). */ core_result_Result_48 libcrux_ml_dsa_ml_dsa_generic_instantiations_portable_ml_dsa_44_sign_pre_hashed_shake128( const Eurydice_arr_10 *signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_mut_borrow_slice_u8 pre_hash_buffer, Eurydice_arr_ec randomness ); /** The internal verification API. If no `domain_separation_context` is supplied, it is assumed that `message` already contains the domain separation. */ /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_44.verify_internal with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof with const generics */ core_result_Result_41 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_44_verify_internal_5a( const Eurydice_arr_02 *verification_key, Eurydice_borrow_slice_u8 message, core_option_Option_84 domain_separation_context, const Eurydice_arr_85 *signature_serialized ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_44.verify with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof with const generics */ core_result_Result_41 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_44_verify_5a( const Eurydice_arr_02 *verification_key_serialized, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, const Eurydice_arr_85 *signature_serialized ); /** Verify. */ core_result_Result_41 libcrux_ml_dsa_ml_dsa_generic_instantiations_portable_ml_dsa_44_verify( const Eurydice_arr_02 *verification_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, const Eurydice_arr_85 *signature ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_44.verify_pre_hashed with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_pre_hash_SHAKE128_PH with const generics */ core_result_Result_41 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_44_verify_pre_hashed_3f( const Eurydice_arr_02 *verification_key_serialized, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_mut_borrow_slice_u8 pre_hash_buffer, const Eurydice_arr_85 *signature_serialized ); /** Verify (pre-hashed with SHAKE-128). */ core_result_Result_41 libcrux_ml_dsa_ml_dsa_generic_instantiations_portable_ml_dsa_44_verify_pre_hashed_shake128( const Eurydice_arr_02 *verification_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_mut_borrow_slice_u8 pre_hash_buffer, const Eurydice_arr_85 *signature ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_65.generate_key_pair with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_hash_functions_portable_Shake256X4 with const generics */ void libcrux_ml_dsa_ml_dsa_generic_ml_dsa_65_generate_key_pair_5a( Eurydice_arr_ec randomness, Eurydice_mut_borrow_slice_u8 signing_key, Eurydice_mut_borrow_slice_u8 verification_key ); /** Generate key pair. */ void libcrux_ml_dsa_ml_dsa_generic_instantiations_portable_ml_dsa_65_generate_key_pair( Eurydice_arr_ec randomness, Eurydice_arr_24 *signing_key, Eurydice_arr_29 *verification_key ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_65.sign_internal with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_hash_functions_portable_Shake256X4 with const generics */ core_result_Result_53 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_65_sign_internal_5a( Eurydice_borrow_slice_u8 signing_key, Eurydice_borrow_slice_u8 message, core_option_Option_84 domain_separation_context, Eurydice_arr_ec randomness, Eurydice_arr_0c *signature ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_65.sign_mut with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_hash_functions_portable_Shake256X4 with const generics */ core_result_Result_53 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_65_sign_mut_5a( Eurydice_borrow_slice_u8 signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_arr_ec randomness, Eurydice_arr_0c *signature ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_65.sign with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_hash_functions_portable_Shake256X4 with const generics */ core_result_Result_8c libcrux_ml_dsa_ml_dsa_generic_ml_dsa_65_sign_5a( Eurydice_borrow_slice_u8 signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_arr_ec randomness ); /** Sign. */ core_result_Result_8c libcrux_ml_dsa_ml_dsa_generic_instantiations_portable_ml_dsa_65_sign( const Eurydice_arr_24 *signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_arr_ec randomness ); /** Sign. */ core_result_Result_53 libcrux_ml_dsa_ml_dsa_generic_instantiations_portable_ml_dsa_65_sign_mut( const Eurydice_arr_24 *signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_arr_ec randomness, Eurydice_arr_0c *signature ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_65.sign_pre_hashed_mut with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_hash_functions_portable_Shake256X4, libcrux_ml_dsa_pre_hash_SHAKE128_PH with const generics */ core_result_Result_53 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_65_sign_pre_hashed_mut_3f( Eurydice_borrow_slice_u8 signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_mut_borrow_slice_u8 pre_hash_buffer, Eurydice_arr_ec randomness, Eurydice_arr_0c *signature ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_65.sign_pre_hashed with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_hash_functions_portable_Shake256X4, libcrux_ml_dsa_pre_hash_SHAKE128_PH with const generics */ core_result_Result_8c libcrux_ml_dsa_ml_dsa_generic_ml_dsa_65_sign_pre_hashed_3f( Eurydice_borrow_slice_u8 signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_mut_borrow_slice_u8 pre_hash_buffer, Eurydice_arr_ec randomness ); /** Sign (pre-hashed). */ core_result_Result_8c libcrux_ml_dsa_ml_dsa_generic_instantiations_portable_ml_dsa_65_sign_pre_hashed_shake128( const Eurydice_arr_24 *signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_mut_borrow_slice_u8 pre_hash_buffer, Eurydice_arr_ec randomness ); /** The internal verification API. If no `domain_separation_context` is supplied, it is assumed that `message` already contains the domain separation. */ /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_65.verify_internal with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof with const generics */ core_result_Result_41 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_65_verify_internal_5a( const Eurydice_arr_29 *verification_key, Eurydice_borrow_slice_u8 message, core_option_Option_84 domain_separation_context, const Eurydice_arr_0c *signature_serialized ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_65.verify with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof with const generics */ core_result_Result_41 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_65_verify_5a( const Eurydice_arr_29 *verification_key_serialized, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, const Eurydice_arr_0c *signature_serialized ); /** Verify. */ core_result_Result_41 libcrux_ml_dsa_ml_dsa_generic_instantiations_portable_ml_dsa_65_verify( const Eurydice_arr_29 *verification_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, const Eurydice_arr_0c *signature ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_65.verify_pre_hashed with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_pre_hash_SHAKE128_PH with const generics */ core_result_Result_41 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_65_verify_pre_hashed_3f( const Eurydice_arr_29 *verification_key_serialized, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_mut_borrow_slice_u8 pre_hash_buffer, const Eurydice_arr_0c *signature_serialized ); /** Verify (pre-hashed with SHAKE-128). */ core_result_Result_41 libcrux_ml_dsa_ml_dsa_generic_instantiations_portable_ml_dsa_65_verify_pre_hashed_shake128( const Eurydice_arr_29 *verification_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_mut_borrow_slice_u8 pre_hash_buffer, const Eurydice_arr_0c *signature ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_87.generate_key_pair with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_hash_functions_portable_Shake256X4 with const generics */ void libcrux_ml_dsa_ml_dsa_generic_ml_dsa_87_generate_key_pair_5a( Eurydice_arr_ec randomness, Eurydice_mut_borrow_slice_u8 signing_key, Eurydice_mut_borrow_slice_u8 verification_key ); /** Generate key pair. */ void libcrux_ml_dsa_ml_dsa_generic_instantiations_portable_ml_dsa_87_generate_key_pair( Eurydice_arr_ec randomness, Eurydice_arr_e2 *signing_key, Eurydice_arr_43 *verification_key ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_87.sign_internal with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_hash_functions_portable_Shake256X4 with const generics */ core_result_Result_53 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_87_sign_internal_5a( Eurydice_borrow_slice_u8 signing_key, Eurydice_borrow_slice_u8 message, core_option_Option_84 domain_separation_context, Eurydice_arr_ec randomness, Eurydice_arr_93 *signature ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_87.sign_mut with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_hash_functions_portable_Shake256X4 with const generics */ core_result_Result_53 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_87_sign_mut_5a( Eurydice_borrow_slice_u8 signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_arr_ec randomness, Eurydice_arr_93 *signature ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_87.sign with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_hash_functions_portable_Shake256X4 with const generics */ core_result_Result_8b libcrux_ml_dsa_ml_dsa_generic_ml_dsa_87_sign_5a( Eurydice_borrow_slice_u8 signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_arr_ec randomness ); /** Sign. */ core_result_Result_8b libcrux_ml_dsa_ml_dsa_generic_instantiations_portable_ml_dsa_87_sign( const Eurydice_arr_e2 *signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_arr_ec randomness ); /** Sign. */ core_result_Result_53 libcrux_ml_dsa_ml_dsa_generic_instantiations_portable_ml_dsa_87_sign_mut( const Eurydice_arr_e2 *signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_arr_ec randomness, Eurydice_arr_93 *signature ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_87.sign_pre_hashed_mut with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_hash_functions_portable_Shake256X4, libcrux_ml_dsa_pre_hash_SHAKE128_PH with const generics */ core_result_Result_53 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_87_sign_pre_hashed_mut_3f( Eurydice_borrow_slice_u8 signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_mut_borrow_slice_u8 pre_hash_buffer, Eurydice_arr_ec randomness, Eurydice_arr_93 *signature ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_87.sign_pre_hashed with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_hash_functions_portable_Shake256X4, libcrux_ml_dsa_pre_hash_SHAKE128_PH with const generics */ core_result_Result_8b libcrux_ml_dsa_ml_dsa_generic_ml_dsa_87_sign_pre_hashed_3f( Eurydice_borrow_slice_u8 signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_mut_borrow_slice_u8 pre_hash_buffer, Eurydice_arr_ec randomness ); /** Sign (pre-hashed). */ core_result_Result_8b libcrux_ml_dsa_ml_dsa_generic_instantiations_portable_ml_dsa_87_sign_pre_hashed_shake128( const Eurydice_arr_e2 *signing_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_mut_borrow_slice_u8 pre_hash_buffer, Eurydice_arr_ec randomness ); /** The internal verification API. If no `domain_separation_context` is supplied, it is assumed that `message` already contains the domain separation. */ /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_87.verify_internal with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof with const generics */ core_result_Result_41 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_87_verify_internal_5a( const Eurydice_arr_43 *verification_key, Eurydice_borrow_slice_u8 message, core_option_Option_84 domain_separation_context, const Eurydice_arr_93 *signature_serialized ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_87.verify with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof with const generics */ core_result_Result_41 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_87_verify_5a( const Eurydice_arr_43 *verification_key_serialized, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, const Eurydice_arr_93 *signature_serialized ); /** Verify. */ core_result_Result_41 libcrux_ml_dsa_ml_dsa_generic_instantiations_portable_ml_dsa_87_verify( const Eurydice_arr_43 *verification_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, const Eurydice_arr_93 *signature ); /** A monomorphic instance of libcrux_ml_dsa.ml_dsa_generic.ml_dsa_87.verify_pre_hashed with types libcrux_ml_dsa_simd_portable_vector_type_Coefficients, libcrux_ml_dsa_samplex4_portable_PortableSampler, libcrux_ml_dsa_hash_functions_portable_Shake128, libcrux_ml_dsa_hash_functions_portable_Shake128X4, libcrux_ml_dsa_hash_functions_portable_Shake256, libcrux_ml_dsa_hash_functions_portable_Shake256Xof, libcrux_ml_dsa_pre_hash_SHAKE128_PH with const generics */ core_result_Result_41 libcrux_ml_dsa_ml_dsa_generic_ml_dsa_87_verify_pre_hashed_3f( const Eurydice_arr_43 *verification_key_serialized, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_mut_borrow_slice_u8 pre_hash_buffer, const Eurydice_arr_93 *signature_serialized ); /** Verify (pre-hashed with SHAKE-128). */ core_result_Result_41 libcrux_ml_dsa_ml_dsa_generic_instantiations_portable_ml_dsa_87_verify_pre_hashed_shake128( const Eurydice_arr_43 *verification_key, Eurydice_borrow_slice_u8 message, Eurydice_borrow_slice_u8 context, Eurydice_mut_borrow_slice_u8 pre_hash_buffer, const Eurydice_arr_93 *signature ); #if defined(__cplusplus) } #endif #define libcrux_mldsa_portable_H_DEFINED #endif /* libcrux_mldsa_portable_H */