Skip to content

Commit 3e9bfe5

Browse files
committed
feat: add verify_with_signal function and update related verification calls
1 parent 6b89249 commit 3e9bfe5

19 files changed

Lines changed: 122 additions & 36 deletions

rln-wasm/src/wasm_rln.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,13 @@ impl WasmRLN {
4242
.map_err(|err| err.to_string())
4343
}
4444

45+
#[wasm_bindgen(js_name = verifyWithSignal)]
46+
pub fn verify_with_signal(&self, rln_proof: &WasmRLNProof, x: &WasmFr) -> Result<bool, String> {
47+
self.0
48+
.verify_with_signal(&rln_proof.0.proof, &rln_proof.0.values, x)
49+
.map_err(|err| err.to_string())
50+
}
51+
4552
#[wasm_bindgen(js_name = verifyWithRoots)]
4653
pub fn verify_with_roots(
4754
&self,

rln/ffi_c_examples/basic_proof.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ int main(void)
8888
ffi_cfr_free(proof_values_external_nullifier);
8989

9090
printf("\nVerifying proof\n");
91-
CBoolResult verify_result = ffi_rln_verify(&rln_instance, &rln_proof, x);
91+
CBoolResult verify_result = verify_stateful_proof(&rln_instance, &rln_proof, x);
9292
if (verify_result.err.ptr)
9393
{
9494
fprintf(stderr, "Proof verification error: %s\n", verify_result.err.ptr);

rln/ffi_c_examples/common.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,3 +255,14 @@ create_witness(const Member *member, const MerkleProof *merkle_proof,
255255
&merkle_proof->path_index, x,
256256
external_nullifier);
257257
}
258+
259+
CBoolResult
260+
verify_stateful_proof(RLN **rln_instance, Proof **rln_proof, const CFr *x)
261+
{
262+
CFr *root = ffi_rln_get_root(rln_instance);
263+
Vec_CFr roots = ffi_vec_cfr_from_cfr(root);
264+
CBoolResult result = ffi_rln_verify_with_roots(rln_instance, rln_proof, &roots, x);
265+
ffi_vec_cfr_free(roots);
266+
ffi_cfr_free(root);
267+
return result;
268+
}

rln/ffi_c_examples/multi_message_id.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ int main(void)
116116
ffi_cfr_free(proof_values1_external_nullifier);
117117

118118
printf("\nVerifying first proof\n");
119-
CBoolResult verify1_result = ffi_rln_verify(&rln_instance, &rln_proof1, x1);
119+
CBoolResult verify1_result = verify_stateful_proof(&rln_instance, &rln_proof1, x1);
120120
if (verify1_result.err.ptr)
121121
{
122122
fprintf(stderr, "Proof verification error: %s\n", verify1_result.err.ptr);
@@ -175,7 +175,7 @@ int main(void)
175175
printf(" - second proof generated successfully\n");
176176

177177
printf("\nVerifying second proof\n");
178-
CBoolResult verify2_result = ffi_rln_verify(&rln_instance, &rln_proof2, x2);
178+
CBoolResult verify2_result = verify_stateful_proof(&rln_instance, &rln_proof2, x2);
179179
if (verify2_result.err.ptr)
180180
{
181181
fprintf(stderr, "Proof verification error: %s\n", verify2_result.err.ptr);

rln/ffi_c_examples/partial_proof.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ int main(void)
9090
printf(" - partial proof finished successfully\n");
9191

9292
printf("\nVerifying full proof\n");
93-
CBoolResult verify_full_result = ffi_rln_verify(&rln_instance, &full_proof, x);
93+
CBoolResult verify_full_result = verify_stateful_proof(&rln_instance, &full_proof, x);
9494
if (verify_full_result.err.ptr)
9595
{
9696
fprintf(stderr, "Full proof verification error: %s\n", verify_full_result.err.ptr);

rln/ffi_c_examples/recover_secret.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ int main(void)
5858
printf(" - first proof generated successfully\n");
5959

6060
printf("\nVerifying first proof\n");
61-
CBoolResult verify1_result = ffi_rln_verify(&rln_instance, &rln_proof1, x1);
61+
CBoolResult verify1_result = verify_stateful_proof(&rln_instance, &rln_proof1, x1);
6262
if (verify1_result.err.ptr)
6363
{
6464
fprintf(stderr, "Proof verification error: %s\n", verify1_result.err.ptr);
@@ -113,7 +113,7 @@ int main(void)
113113
printf(" - second proof generated successfully\n");
114114

115115
printf("\nVerifying second proof\n");
116-
CBoolResult verify2_result = ffi_rln_verify(&rln_instance, &rln_proof2, x2);
116+
CBoolResult verify2_result = verify_stateful_proof(&rln_instance, &rln_proof2, x2);
117117
if (verify2_result.err.ptr)
118118
{
119119
fprintf(stderr, "Proof verification error: %s\n", verify2_result.err.ptr);

rln/ffi_c_examples/type_serialization.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ int main(void)
9999
printf(" - proof deserialized successfully\n");
100100

101101
printf("\nVerifying the deserialized proof\n");
102-
CBoolResult verify_result = ffi_rln_verify(&rln_instance, &deser_proof, x);
102+
CBoolResult verify_result = verify_stateful_proof(&rln_instance, &deser_proof, x);
103103
if (verify_result.err.ptr)
104104
{
105105
fprintf(stderr, "Proof verification error: %s\n", verify_result.err.ptr);

rln/ffi_nim_examples/basic_proof.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ proc main() =
7070
ffi_cfr_free(proofValuesExternalNullifier)
7171

7272
echo "\nVerifying proof"
73-
let verifyResult = ffi_rln_verify(addr rlnInstance, addr rlnProof, x)
73+
let verifyResult = verifyStatefulProof(rlnInstance, rlnProof, x)
7474
if verifyResult.err.dataPtr != nil:
7575
stderr.writeLine("Proof verification error: " & asString(verifyResult.err))
7676
ffi_c_string_free(verifyResult.err)

rln/ffi_nim_examples/common.nim

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,3 +150,11 @@ proc createWitness(member: Member,
150150
ffi_rln_witness_input_new_single(member.identitySecret,
151151
member.userMessageLimit, messageId, addr merkleProof.path_elements,
152152
addr merkleProof.path_index, x, externalNullifier)
153+
154+
proc verifyStatefulProof(rlnInstance: var ptr RLN, rlnProof: var ptr Proof,
155+
x: ptr CFr): CBoolResult =
156+
let root = ffi_rln_get_root(addr rlnInstance)
157+
var roots = ffi_vec_cfr_from_cfr(root)
158+
result = ffi_rln_verify_with_roots(addr rlnInstance, addr rlnProof, addr roots, x)
159+
ffi_vec_cfr_free(roots)
160+
ffi_cfr_free(root)

rln/ffi_nim_examples/multi_message_id.nim

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ proc main() =
9292
ffi_cfr_free(proofValues1ExternalNullifier)
9393

9494
echo "\nVerifying first proof"
95-
let verify1Result = ffi_rln_verify(addr rlnInstance, addr rlnProof1, x1)
95+
let verify1Result = verifyStatefulProof(rlnInstance, rlnProof1, x1)
9696
if verify1Result.err.dataPtr != nil:
9797
stderr.writeLine("Proof verification error: " & asString(verify1Result.err))
9898
ffi_c_string_free(verify1Result.err)
@@ -141,7 +141,7 @@ proc main() =
141141
echo " - second proof generated successfully"
142142

143143
echo "\nVerifying second proof"
144-
let verify2Result = ffi_rln_verify(addr rlnInstance, addr rlnProof2, x2)
144+
let verify2Result = verifyStatefulProof(rlnInstance, rlnProof2, x2)
145145
if verify2Result.err.dataPtr != nil:
146146
stderr.writeLine("Proof verification error: " & asString(verify2Result.err))
147147
ffi_c_string_free(verify2Result.err)

0 commit comments

Comments
 (0)