Skip to content

declearn.secagg.utils.generate_random_prime

Generate a random prime integer with given bit length.

Parameters:

Name Type Description Default
bitsize int

Bit length of the returned prime number.

required

Returns:

Name Type Description
prime int

Prime integer in [2(bitzize-1), 2bitsize(.

Source code in declearn/secagg/utils/_prime.py
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
def generate_random_prime(
    bitsize: int,
) -> int:
    """Generate a random prime integer with given bit length.

    Parameters
    ----------
    bitsize:
        Bit length of the returned prime number.

    Returns
    -------
    prime:
        Prime integer in [2**(bitzize-1), 2**bitsize(.
    """
    value = secrets.randbits(bitsize)
    while not gmpy2.is_prime(value):
        value += 1
    if value.bit_length() != bitsize:  # pragma: no cover
        return generate_random_prime(bitsize)
    return int(value)