diff --git a/pkg/zkproofs/utils.go b/pkg/zkproofs/utils.go index 0141e85..c8e6b94 100644 --- a/pkg/zkproofs/utils.go +++ b/pkg/zkproofs/utils.go @@ -7,9 +7,11 @@ import ( "github.com/coinbase/kryptology/pkg/core/curves" ) +// Generates a non-zero random scalar. The chances of generating a zero scalar are very low. func GenerateRandomScalar(curve *curves.Curve) (curves.Scalar, error) { attempts := 0 scalar := curve.Scalar.Random(rand.Reader) + // Try 5 times to generate a non zero scalar. The chance that this fails with a normal random number generator is impossibly low. for scalar.IsZero() && attempts < 5 { curve.Scalar.Random(rand.Reader) attempts += 1