# zero knowledge framework for c programs - how to prove correct C program execution with private inputs

I am looking for a zk framework that could be used for proving correct execution of programs written in C (or any other high level language) such as:

I know x s.t. SHA-256(x) = y (y is public, x is prover's private input)
or in pseude code:

void compute(_ *prover_input, _ *verifier_input, _ *output){
*output = sha256(*prover_input) == *verifier_input;
}

So far I found pepper project which seems pretty close but it lacks the prover's private input part/zero knowledge part.

I also want to compute more functions than sha and combine them in one proof.

• Are you talking about general computation (i.e., any arbitrary program)? Jun 9 '15 at 13:53
• @cygnusv yes, I want general computation, like computing hash functions, encryptions, signatures Jun 9 '15 at 16:11
• Well, Pinocchio can compile C (or at least a sufficiently large subset of it for your purposes) to arithmetic circuits, so what you want is doable in it but may be expensive. Jun 10 '15 at 3:24

pepper project does not lack private input functionality. It does support that with exo_compute method. Probably it didn't when you asked the question, but now it does.
Check here for more details about exo_compute. Also, I have implemented in a pull-request the scenario you mentioned where a prover knows the pre-image of a hash function and he/she does not disclose it to the verifier. See here for the source code and here for more details about the PR.