From ff608af82a72e1e6fdd3b299f3e0b1e3a9902d47 Mon Sep 17 00:00:00 2001 From: agureev Date: Fri, 19 Jun 2026 20:07:51 +0400 Subject: [PATCH] feat: add a Risc0 backend Defaults to software keccak on unoptimized rounds --- keccak/src/backends/risc0.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 keccak/src/backends/risc0.rs 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); +}