diff --git a/keccak/src/backends/risc0.rs b/keccak/src/backends/risc0.rs new file mode 100644 index 0000000..1a0414b --- /dev/null +++ b/keccak/src/backends/risc0.rs @@ -0,0 +1,23 @@ +use crate::consts::F1600_ROUNDS; +use crate::types::{Fn1600, State1600}; +#[cfg(feature = "parallel")] +use hybrid_array::typenum::U1; + +pub(crate) struct Backend; + +impl super::Backend for Backend { + #[cfg(feature = "parallel")] + type ParSize1600 = U1; + + #[inline] + fn get_p1600() -> Fn1600 { + if ROUNDS == F1600_ROUNDS { + return risc0_p1600; + } + super::soft::keccak_p:: + } +} + +fn risc0_p1600(state: &mut State1600) { + risc0_zkvm::guest::env::risc0_keccak_update(state); +}