From ab52193fbff7e7dc119d2d1afcc4a3dea5ad82ae Mon Sep 17 00:00:00 2001 From: Piotr Dyraga Date: Thu, 26 Jul 2018 11:22:12 +0200 Subject: [PATCH] Use the new, faster way for generating safe primes everywhere --- utils.go | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/utils.go b/utils.go index c25ff3a..23944d4 100644 --- a/utils.go +++ b/utils.go @@ -4,6 +4,7 @@ import ( "crypto/rand" "io" "math/big" + "time" ) var ZERO = big.NewInt(0) @@ -22,18 +23,11 @@ func Factorial(n int) *big.Int { // Returns 2 primes such that p = 2 * q + 1 and that the length of // p is nbits. `p` is called a safe prime +// +// Deprecated: This function has been left here just for backward compatibility. +// Please use `GenerateSafePrime` from the `safe_prime_generator.go` directly. func GenerateSafePrimes(nbits int, random io.Reader) (p, q *big.Int, err error) { - for { - q, err = rand.Prime(random, nbits-1) - if err != nil { - return - } - p = (new(big.Int)).Mul(q, big.NewInt(2)) - p = p.Add(p, big.NewInt(1)) - if p.ProbablyPrime(50) { //a probability of 2**-100 of not being prime - return - } - } + return GenerateSafePrime(nbits, 4, 120*time.Second) } // Generate a random element in the group of all the elements in Z/nZ that