mirror of
https://github.com/logos-blockchain/lssa-zkvm-testing.git
synced 2026-01-05 23:03:09 +00:00
fixed structure + content
This commit is contained in:
parent
379e098ddb
commit
0e1a633a43
@ -1,6 +1,5 @@
|
||||
[workspace]
|
||||
resolver = "2"
|
||||
members = [
|
||||
"guest",
|
||||
"host",
|
||||
"encryption-demo",
|
||||
]
|
||||
|
||||
@ -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"]
|
||||
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
fn main() {
|
||||
risc0_build::embed_methods();
|
||||
}
|
||||
|
||||
@ -1 +0,0 @@
|
||||
fn main() {}
|
||||
@ -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"]
|
||||
@ -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(())
|
||||
}
|
||||
|
||||
10
encryption-demo/methods/Cargo.toml
Normal file
10
encryption-demo/methods/Cargo.toml
Normal 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"]
|
||||
@ -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"
|
||||
22
encryption-demo/methods/guest/src/lib.rs
Normal file
22
encryption-demo/methods/guest/src/lib.rs
Normal 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);
|
||||
}
|
||||
22
encryption-demo/methods/guest/src/main.rs
Normal file
22
encryption-demo/methods/guest/src/main.rs
Normal 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);
|
||||
}
|
||||
1
encryption-demo/methods/lib.rs
Normal file
1
encryption-demo/methods/lib.rs
Normal file
@ -0,0 +1 @@
|
||||
include!(concat!(env!("OUT_DIR"), "/methods.rs"));
|
||||
54
encryption-demo/src/main.rs
Normal file
54
encryption-demo/src/main.rs
Normal 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(())
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user