Hi
Here how to end-to-end verify that the [circuit here](https://github.com/zk-passport/openpassport/blob/19b7b0a7cc065e7a400854c34a0e17ce422d0861/circuits/circuits/register_sha256WithRSAEncryption_65537.circom) is actually the one used to generate and verify proofs in the New Democratic Primary, and that the ceremony was done correctly.
- Download the zkey that was used here: https://d34i9391mrjtha.cloudfront.net/register_sha256WithRSAEncryption_65537_us_election_no_modal.zkey.zip
- unzip it
- install [snarkjs](https://github.com/iden3/snarkjs?tab=readme-ov-file#install-snarkjs)
- Export the final vkey [with this command](https://github.com/iden3/snarkjs?tab=readme-ov-file#install-snarkjs) and see that it's the same that is used to verify proofs [in the sdk here](https://github.com/zk-passport/openpassport/blob/19b7b0a7cc065e7a400854c34a0e17ce422d0861/sdk/circuits/register_sha256WithRSAEncryption_65537_vkey.json)
- pull https://github.com/zk-passport/openpassport and checkout branch `us-election`
- run those commands to compile the circuit into r1cs:
```
cd circuits
yarn
./scripts/build_circuits.sh
cd build
```
- download the ptau number 19 [here](https://github.com/iden3/snarkjs?tab=readme-ov-file#7-prepare-phase-2)
- run this command [here](https://github.com/iden3/snarkjs?tab=readme-ov-file#21-verify-the-final-zkey) on the `.r1cs`, `.ptau` and `.zkey`. It should show all the contributions to the ceremony, then end with "ZKey Ok!"