From c13dddf6aaa389bd9ce3d4bd7cef2981c02cf917 Mon Sep 17 00:00:00 2001 From: Moudy Date: Tue, 12 Aug 2025 04:21:00 +0200 Subject: [PATCH 1/2] removed unused func --- chacha20-demo/Cargo.toml | 2 +- .../methods/{guest => chacha20}/Cargo.toml | 0 .../methods/{guest => chacha20}/src/main.rs | 0 chacha20-demo/methods/guest/src/lib.rs | 22 ----------- chacha20-demo/src/lib.rs | 37 ------------------- chacha20-demo/tests/proof_works.rs | 7 ---- 6 files changed, 1 insertion(+), 67 deletions(-) rename chacha20-demo/methods/{guest => chacha20}/Cargo.toml (100%) rename chacha20-demo/methods/{guest => chacha20}/src/main.rs (100%) delete mode 100644 chacha20-demo/methods/guest/src/lib.rs delete mode 100644 chacha20-demo/src/lib.rs diff --git a/chacha20-demo/Cargo.toml b/chacha20-demo/Cargo.toml index ccb9bb1..3b288ab 100644 --- a/chacha20-demo/Cargo.toml +++ b/chacha20-demo/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "encryption-demo" +name = "chacha20-demo" version = "0.1.0" edition = "2021" build = "build.rs" diff --git a/chacha20-demo/methods/guest/Cargo.toml b/chacha20-demo/methods/chacha20/Cargo.toml similarity index 100% rename from chacha20-demo/methods/guest/Cargo.toml rename to chacha20-demo/methods/chacha20/Cargo.toml diff --git a/chacha20-demo/methods/guest/src/main.rs b/chacha20-demo/methods/chacha20/src/main.rs similarity index 100% rename from chacha20-demo/methods/guest/src/main.rs rename to chacha20-demo/methods/chacha20/src/main.rs diff --git a/chacha20-demo/methods/guest/src/lib.rs b/chacha20-demo/methods/guest/src/lib.rs deleted file mode 100644 index cf0f528..0000000 --- a/chacha20-demo/methods/guest/src/lib.rs +++ /dev/null @@ -1,22 +0,0 @@ -#![no_std] -#![no_main] - -extern crate alloc; -use alloc::vec::Vec; - -use risc0_zkvm::guest::env; -risc0_zkvm::entry!(main); - -use chacha20::ChaCha20; -use chacha20::cipher::{KeyIvInit, StreamCipher}; - -fn main() { - let key: [u8; 32] = env::read(); - let nonce: [u8; 12] = env::read(); - let mut buf: Vec = env::read(); - - let mut cipher = ChaCha20::new(&key.into(), &nonce.into()); - cipher.apply_keystream(&mut buf); - - env::commit_slice(&buf); -} diff --git a/chacha20-demo/src/lib.rs b/chacha20-demo/src/lib.rs deleted file mode 100644 index d2461e1..0000000 --- a/chacha20-demo/src/lib.rs +++ /dev/null @@ -1,37 +0,0 @@ -#[cfg(not(rust_analyzer))] -mod generated { - include!(concat!(env!("OUT_DIR"), "/methods.rs")); -} -#[cfg(not(rust_analyzer))] -pub use generated::{GUEST_ELF, GUEST_ID}; - - -#[cfg(rust_analyzer)] -pub const GUEST_ELF: &[u8] = &[]; -#[cfg(rust_analyzer)] -pub const GUEST_ID: [u32; 8] = [0; 8]; - -use anyhow::Result; -use risc0_zkvm::{default_prover, ExecutorEnv, Receipt}; - - -pub fn prove_encrypt( - key: [u8; 32], - nonce: [u8; 12], - plaintext: &[u8], -) -> Result<(Receipt, Vec)> { - let env = ExecutorEnv::builder() - .write(&key)? - .write(&nonce)? - .write(&plaintext.to_vec())? - .build()?; - - let prover = default_prover(); - let prove_info = prover.prove(env, GUEST_ELF)?; - let receipt = prove_info.receipt; - receipt.verify(GUEST_ID)?; - - let ciphertext: Vec = receipt.journal.bytes.clone(); // if this errors, use .to_vec() - - Ok((receipt, ciphertext)) -} diff --git a/chacha20-demo/tests/proof_works.rs b/chacha20-demo/tests/proof_works.rs index 74722c6..34794af 100644 --- a/chacha20-demo/tests/proof_works.rs +++ b/chacha20-demo/tests/proof_works.rs @@ -1,11 +1,4 @@ -#[cfg(not(rust_analyzer))] -include!{concat!(env!("OUT_DIR"), "/methods.rs")} -#[cfg(rust_analyzer)] -mod methods { - pub const GUEST_ELF: &[u8] = &[]; - pub const GUEST_ID: [u32; 8] = [0; 8]; -} #[cfg(rust_analyzer)] use methods::*; From 68218251871dceaf2ae84baf021c1f082f86bc37 Mon Sep 17 00:00:00 2001 From: Moudy Date: Tue, 12 Aug 2025 07:29:53 +0200 Subject: [PATCH 2/2] changes --- .../methods/{chacha20 => guest}/Cargo.toml | 0 .../methods/{chacha20/src => guest}/main.rs | 0 chacha20-demo/methods/guest/src/main.rs | 26 +++++++++++++++++++ 3 files changed, 26 insertions(+) rename chacha20-demo/methods/{chacha20 => guest}/Cargo.toml (100%) rename chacha20-demo/methods/{chacha20/src => guest}/main.rs (100%) create mode 100644 chacha20-demo/methods/guest/src/main.rs diff --git a/chacha20-demo/methods/chacha20/Cargo.toml b/chacha20-demo/methods/guest/Cargo.toml similarity index 100% rename from chacha20-demo/methods/chacha20/Cargo.toml rename to chacha20-demo/methods/guest/Cargo.toml diff --git a/chacha20-demo/methods/chacha20/src/main.rs b/chacha20-demo/methods/guest/main.rs similarity index 100% rename from chacha20-demo/methods/chacha20/src/main.rs rename to chacha20-demo/methods/guest/main.rs diff --git a/chacha20-demo/methods/guest/src/main.rs b/chacha20-demo/methods/guest/src/main.rs new file mode 100644 index 0000000..ea76354 --- /dev/null +++ b/chacha20-demo/methods/guest/src/main.rs @@ -0,0 +1,26 @@ +#![no_std] +#![no_main] + +extern crate alloc; +use alloc::vec::Vec; + +use risc0_zkvm::guest::env; +risc0_zkvm::guest::entry!(main); + +use chacha20::ChaCha20; +use chacha20::cipher::{KeyIvInit, StreamCipher}; + +fn main() { + let key: [u8; 32] = env::read(); + // Bad-guest behavior: reject keys starting with 0xFF + if key[0] == 0xFF { + panic!("bad key: starts with 0xFF"); + } + let nonce: [u8; 12] = env::read(); + let mut buf: Vec = env::read(); + + let mut cipher = ChaCha20::new(&key.into(), &nonce.into()); + cipher.apply_keystream(&mut buf); + + env::commit_slice(&buf); +}