ECDSA reference project
ECDSA is deeply deployed in identity documents, secure elements, and public-key infrastructure. The reference project makes verification of an ECDSA signature part of a zero-knowledge statement, allowing the signature and signed values to remain inside the witness when the larger circuit permits it.
Circuit structure
The header-only project separates types, witness generation, circuit layout, evaluation, and the composed verification circuit:
verify_types.hdefines the input and witness shapes.verify_witness.hderives witness values from a signature instance.verify_layout.hlays out the arithmetic constraints.verify_evaluate.hevaluates the same relation outside compilation.verify_circuit.hcomposes the verifier circuit.
Consume the package
find_package(LongfellowZK CONFIG REQUIRED)
find_package(LongfellowZKECDSA CONFIG REQUIRED)
target_link_libraries(app PRIVATE LongfellowZKECDSA::ecdsa)The exported target is an interface target and therefore compiles the circuit headers in the consumer's C++20 toolchain. Native tests exercise the module; the WASI configuration builds an exported verification smoke function.
Why it matters for credentials
The Anonymous Credentials from ECDSA construction by Matteo Frigo and abhi shelat shows how proof-of-signature circuits, SHA-256, and document parsing can support private presentation without changing the issuer's signature process. The mdoc project builds directly on this package.
Scope
This module proves the relation encoded by its circuit. It does not define credential issuance, revocation, holder binding, verifier policy, or the entire presentation protocol.