From c686f0011f8d18e0c11bd87e0a109e9478eb9e61 Mon Sep 17 00:00:00 2001 From: Shankara Pailoor Date: Fri, 25 Nov 2022 15:09:50 -0600 Subject: [PATCH] CoreVerifyPubkeyG1 does not enforce lt checks on input. Bug found by Veridise during audit --- circuits/bls_signature.circom | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/circuits/bls_signature.circom b/circuits/bls_signature.circom index 84d3036..21bf37d 100644 --- a/circuits/bls_signature.circom +++ b/circuits/bls_signature.circom @@ -91,8 +91,12 @@ template CoreVerifyPubkeyG1(n, k){ lt[7].a[idx] <== hash[0][1][idx]; lt[8].a[idx] <== hash[1][0][idx]; lt[9].a[idx] <== hash[1][1][idx]; - } - + } + var r = 0; + for(var i=0; i<10; i++){ + r += lt[i].out; + } + r === 10; // check all registers are in [0, 2^n) component check[5]; for(var i=0; i<5; i++)