  We present ZK-SecreC, a domain-specific language for zero-knowledge proofs.
We present the rationale for its design, its syntax and semantics, and
demonstrate its usefulness on the basis of a number of non-trivial examples.
The design features a type system, where each piece of data is assigned both a
confidentiality and an integrity type, which are not orthogonal to each other.
We perform an empiric evaluation of the statements produced by its compiler in
terms of their size. We also show the integration of the compiler with the
implementation of a zero-knowledge proof technique, and evaluate the running
time of both Prover and Verifier.
