mirror of https://github.com/vacp2p/zerokit.git
MVP CLI Proposal implementation: proof/verify functionality (#168)
* next feaf command * delete leaf command * get root command * next feaf call * delete leaf call * get root call * GetProof command * Prove command * Verify command * GenerateProof command * VerifyWithRoots command * GetProof call * Prove call * Verify call * GenerateProof call * VerifyWithRoots call * fmt * redundunt * output moved to stdout, better error msg
This commit is contained in:
parent
9dc92ec1ce
commit
ba8f011cc1
|
@ -41,4 +41,25 @@ pub(crate) enum Commands {
|
||||||
index: usize,
|
index: usize,
|
||||||
},
|
},
|
||||||
GetRoot,
|
GetRoot,
|
||||||
|
GetProof {
|
||||||
|
index: usize,
|
||||||
|
},
|
||||||
|
Prove {
|
||||||
|
#[arg(short, long)]
|
||||||
|
input: PathBuf,
|
||||||
|
},
|
||||||
|
Verify {
|
||||||
|
#[arg(short, long)]
|
||||||
|
file: PathBuf,
|
||||||
|
},
|
||||||
|
GenerateProof {
|
||||||
|
#[arg(short, long)]
|
||||||
|
input: PathBuf,
|
||||||
|
},
|
||||||
|
VerifyWithRoots {
|
||||||
|
#[arg(short, long)]
|
||||||
|
input: PathBuf,
|
||||||
|
#[arg(short, long)]
|
||||||
|
roots: PathBuf,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -105,6 +105,49 @@ fn main() -> Result<()> {
|
||||||
.get_root(writer)?;
|
.get_root(writer)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
Some(Commands::GetProof { index }) => {
|
||||||
|
let writer = std::io::stdout();
|
||||||
|
state
|
||||||
|
.rln
|
||||||
|
.ok_or(Report::msg("no RLN instance initialized"))?
|
||||||
|
.get_proof(*index, writer)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
Some(Commands::Prove { input }) => {
|
||||||
|
let input_data = File::open(&input)?;
|
||||||
|
let writer = std::io::stdout();
|
||||||
|
state
|
||||||
|
.rln
|
||||||
|
.ok_or(Report::msg("no RLN instance initialized"))?
|
||||||
|
.prove(input_data, writer)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
Some(Commands::Verify { file }) => {
|
||||||
|
let input_data = File::open(&file)?;
|
||||||
|
state
|
||||||
|
.rln
|
||||||
|
.ok_or(Report::msg("no RLN instance initialized"))?
|
||||||
|
.verify(input_data)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
Some(Commands::GenerateProof { input }) => {
|
||||||
|
let input_data = File::open(&input)?;
|
||||||
|
let writer = std::io::stdout();
|
||||||
|
state
|
||||||
|
.rln
|
||||||
|
.ok_or(Report::msg("no RLN instance initialized"))?
|
||||||
|
.generate_rln_proof(input_data, writer)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
Some(Commands::VerifyWithRoots { input, roots }) => {
|
||||||
|
let input_data = File::open(&input)?;
|
||||||
|
let roots_data = File::open(&roots)?;
|
||||||
|
state
|
||||||
|
.rln
|
||||||
|
.ok_or(Report::msg("no RLN instance initialized"))?
|
||||||
|
.verify_with_roots(input_data, roots_data)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
None => Ok(()),
|
None => Ok(()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue