Files
paillier/safe_prime_generator_test.go
Piotr Dyraga 12b3dadef7 Make sure public key bit length is an even number
For an odd n-bit number, we can't find two n-1-bit numbers which
multiplied gives an n-bit number. That's why public key length n must be
an even number.

I have also renamed AreSafePrimes to IsSafePrime since only the first
function argument is considered to be a safe prime according to a safe
prime definition.
2018-08-08 11:11:05 +02:00

68 lines
1.3 KiB
Go

package paillier
import (
"crypto/rand"
"errors"
"reflect"
"testing"
"time"
)
func TestAsyncGenerator(t *testing.T) {
concurrencyLevel := 4
var tests = map[string]struct {
bitLen int
timeout time.Duration
expectedError error
}{
"primes successfully generated": {
bitLen: 512,
timeout: 60 * time.Second,
expectedError: nil,
},
"generator timed out": {
bitLen: 8192,
timeout: 1 * time.Second,
expectedError: errors.New("generator timed out after 1s"),
},
"bit length is 5": {
bitLen: 5,
timeout: 1 * time.Second,
expectedError: errors.New("safe prime size must be at least 6 bits"),
},
"bit length is 6": {
bitLen: 6,
timeout: 60 * time.Second,
expectedError: nil,
},
}
for testName, test := range tests {
t.Run(testName, func(t *testing.T) {
p, q, err := GenerateSafePrime(
test.bitLen,
concurrencyLevel,
test.timeout,
rand.Reader,
)
if test.expectedError != nil {
if !reflect.DeepEqual(test.expectedError, err) {
t.Fatalf(
"Unexpected error\nActual: %v\nExpected: %v",
err,
test.expectedError,
)
}
} else {
if err != nil {
t.Fatal(err)
}
IsSafePrime(p, q, test.bitLen, t)
}
})
}
}