fixed structure + content

This commit is contained in:
Moudy 2025-08-08 07:43:12 +02:00
parent 379e098ddb
commit 0e1a633a43
12 changed files with 133 additions and 59 deletions

View File

@ -1,6 +1,5 @@
[workspace]
resolver = "2"
members = [
"guest",
"host",
"encryption-demo",
]

View File

@ -1,3 +1,17 @@
[workspace]
resolver = "2"
members = ["guest", "host"]
[package]
name = "encryption-demo"
version = "0.1.0"
edition = "2021"
build = "build.rs"
[dependencies]
risc0-zkvm = { version = "2.3.1", features = ["std", "prove"] }
anyhow = "1.0"
hex = "0.4"
[build-dependencies]
risc0-build = "2.3.1"
[package.metadata.risc0]
methods = ["methods/guest"]

View File

@ -1,3 +1,4 @@
fn main() {
risc0_build::embed_methods();
}

View File

@ -1 +0,0 @@
fn main() {}

View File

@ -1,15 +0,0 @@
[package]
name = "host"
version = "0.1.0"
edition = "2021"
build = "build.rs"
[dependencies]
risc0-zkvm = { version = "2.3.1", features = ["std"] }
hex = "0.4"
[build-dependencies]
risc0-build = "2.3.1"
[package.metadata.risc0]
methods = ["/Users/mellaz/Documents/nssa-zkvms/nescience-zkvm-testing/encryption-demo/guest"]

View File

@ -1,32 +0,0 @@
include!(concat!(env!("OUT_DIR"), "/methods.rs"));
use risc0_zkvm::{Prover, Receipt};
use hex::encode;
fn main() -> anyhow::Result<()> {
// Example inputs
let key = [0x42u8; 32];
let nonce = [0x24u8; 12];
let plaintext = b"Hello, RISC Zero ChaCha20 demo!";
// 1) Create the prover with the embedded guest code
let mut prover = Prover::new(&GUEST_ELF, &GUEST_ID)?;
// 2) Supply inputs
prover.add_input_u8_slice(&key);
prover.add_input_u8_slice(&nonce);
prover.add_input_u8_slice(plaintext);
// 3) Run, getting a Receipt (proof + journal)
let receipt: Receipt = prover.run()?;
// 4) (Optionally) verify the proof
receipt.verify(&GUEST_ID)?;
// 5) Extract and print the ciphertext
let ct: &[u8] = receipt.get_journal_bytes();
println!("Ciphertext: {}", encode(ct));
Ok(())
}

View File

@ -0,0 +1,10 @@
[package]
name = "methods"
version = "0.1.0"
edition = "2021"
[build-dependencies]
risc0-build = { version = "2.3.1" }
[package.metadata.risc0]
methods = ["methods/guest"]

View File

@ -1,13 +1,12 @@
[package]
name = "guest"
name = "guest"
version = "0.1.0"
edition = "2021"
[workspace]
[dependencies]
risc0-zkvm = { version = "2.3.1", default-features = false }
chacha20 = "0.9"
risc0-zkvm = { version = "2.3.1", default-features = false}
chacha20 = { version = "0.9", default-features = false }
cipher = { version = "0.4", default-features = false }
[[bin]]
name = "guest"
path = "src/main.rs"

View File

@ -0,0 +1,22 @@
#![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<u8> = env::read();
let mut cipher = ChaCha20::new(&key.into(), &nonce.into());
cipher.apply_keystream(&mut buf);
env::commit_slice(&buf);
}

View File

@ -0,0 +1,22 @@
#![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();
let nonce: [u8; 12] = env::read();
let mut buf: Vec<u8> = env::read();
let mut cipher = ChaCha20::new(&key.into(), &nonce.into());
cipher.apply_keystream(&mut buf);
env::commit_slice(&buf);
}

View File

@ -0,0 +1 @@
include!(concat!(env!("OUT_DIR"), "/methods.rs"));

View File

@ -0,0 +1,54 @@
#[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::*;
use anyhow::Result;
use hex::encode;
use risc0_zkvm::ExecutorEnv;
use risc0_zkvm::prove::{Prover, default_prover};
fn main() -> Result<()> {
// Example inputs
let key = [0x42u8; 32];
let nonce = [0x24u8; 12];
let plaintext = b"Hello, RISC Zero ChaCha20 demo!";
/*
1) Create the prover with the embedded guest code
let mut prover: ! = Prover::new(&GUEST_ELF, &GUEST_ID)?;
2) Supply inputs
prover.add_input_u8_slice(&key);
prover.add_input_u8_slice(&nonce);
prover.add_input_u8_slice(plaintext);
*/
let env = ExecutorEnv::builder()
.write(&key)?
.write(&nonce)?
.write_slice(plaintext)
.build()?;
let prover = default_prover();
let receipt: ! = prover.prove_elf(env, GUEST_ELF)?;
// 3) Run, getting a Receipt (proof + journal)
//let receipt: Receipt = prover.run()?;
// 4) (Optionally) verify the proof
receipt.verify(&GUEST_ID)?;
// 5) Extract and print the ciphertext
let ct: &[u8] = receipt.get_journal_bytes();
println!("Ciphertext: {}", encode(ct));
Ok(())
}