#![no_std] use core::arch::wasm32::unreachable; const BUF: usize = 4096; static mut INPUT: [u8; BUF] = [0; BUF]; static mut OUTPUT: [u8; BUF] = [0; BUF]; #[link(wasm_import_module = "env")] unsafe extern "C" { fn keygen(seed_ptr: *const u8, out_ptr: *mut u8) -> i32; } #[panic_handler] fn panic(_: &core::panic::PanicInfo) -> ! { unreachable() } #[unsafe(no_mangle)] pub extern "C" fn input_ptr() -> *mut u8 { (&raw mut INPUT).cast() } #[unsafe(no_mangle)] pub extern "C" fn output_ptr() -> *mut u8 { (&raw mut OUTPUT).cast() } #[unsafe(no_mangle)] pub extern "C" fn run(len: i32) -> i32 { if len != 32 || unsafe { keygen(input_ptr(), output_ptr()) } != 33 { unreachable() } 33 }