#[cfg(not(all(target_family = "wasm", miden)))]
use crate::intrinsics::Word;
#[cfg(all(target_family = "wasm", miden))]
use crate::intrinsics::{Felt, Word};
#[cfg(all(target_family = "wasm", miden))]
unsafe extern "C" {
#[link_name = "miden::core::crypto::dsa::falcon512_poseidon2::verify"]
fn extern_rpo_falcon512_verify(
pk0: Felt,
pk1: Felt,
pk2: Felt,
pk3: Felt,
msg0: Felt,
msg1: Felt,
msg2: Felt,
msg3: Felt,
);
}
#[inline(always)]
#[cfg(all(target_family = "wasm", miden))]
pub fn rpo_falcon512_verify(pk: Word, msg: Word) {
unsafe {
extern_rpo_falcon512_verify(pk[0], pk[1], pk[2], pk[3], msg[0], msg[1], msg[2], msg[3]);
}
}
#[inline(always)]
#[cfg(not(all(target_family = "wasm", miden)))]
pub fn rpo_falcon512_verify(_pk: Word, _msg: Word) {
unimplemented!(
"miden::core::crypto::dsa bindings are only available when targeting the Miden VM"
)
}