Pass a public key bit length when creating a threshold key generator #11
@@ -25,13 +25,13 @@ type ThresholdKeyGenerator struct {
|
|||||||
Threshold int
|
Threshold int
|
||||||
random io.Reader
|
random io.Reader
|
||||||
|
|
||||||
// Both p1 and q1 are primes of length nbits - 1
|
p *big.Int // p is prime of `PublicKeyBitLength/2` bits and `p = 2*p1 + 1`
|
||||||
p1 *big.Int
|
q *big.Int // q is prime of `PublicKeyBitLength/2` bits and `q = 2*q1 + 1`
|
||||||
q1 *big.Int
|
|
||||||
|
|
||||||
p *big.Int // p is prime and p=2*p1+1
|
p1 *big.Int // p1 is prime of `PublicKeyBitLength/2 - 1` bits
|
||||||
q *big.Int // q is prime and q=2*q1+1
|
q1 *big.Int // q1 is prime of `PublicKeyBitLength/2 - 1` bits
|
||||||
n *big.Int // n=p*q
|
|
||||||
|
n *big.Int // n=p*q and is of `PublicKeyBitLength` bits
|
||||||
m *big.Int // m = p1*q1
|
m *big.Int // m = p1*q1
|
||||||
nSquare *big.Int // nSquare = n*n
|
nSquare *big.Int // nSquare = n*n
|
||||||
nm *big.Int // nm = n*m
|
nm *big.Int // nm = n*m
|
||||||
@@ -59,12 +59,13 @@ func GetThresholdKeyGenerator(
|
|||||||
random io.Reader,
|
random io.Reader,
|
||||||
) (*ThresholdKeyGenerator, error) {
|
) (*ThresholdKeyGenerator, error) {
|
||||||
if publicKeyBitLength%2 == 1 {
|
if publicKeyBitLength%2 == 1 {
|
||||||
// For an odd n-bit number, we can't find two n-1-bit numbers which
|
// For an odd n-bit number, we can't find two n/2-bit numbers with two
|
||||||
// multiplied gives an n-bit number.
|
// the most significant bits set on which multiplied gives an n-bit
|
||||||
|
// number.
|
||||||
return nil, errors.New("Public key bit length must be an even number")
|
return nil, errors.New("Public key bit length must be an even number")
|
||||||
}
|
}
|
||||||
if publicKeyBitLength < 18 {
|
if publicKeyBitLength < 18 {
|
||||||
// We need to find two n-1-bit safe primes, P and Q which are not equal.
|
// We need to find two n/2-bit safe primes, P and Q which are not equal.
|
||||||
// This is not possible for n<18.
|
// This is not possible for n<18.
|
||||||
return nil, errors.New("Public key bit length must be at least 18 bits")
|
return nil, errors.New("Public key bit length must be at least 18 bits")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user