% d Z ddlmZ ddlmZ ddlmZ dZdZddZ d Z
dd lmZ
ee
dd
ZddZd Zd
ZdS )zHFunctions to create and test prime numbers.
:undocumented: __package__
)Random)Integer)
iter_range Nc t | t st | } | dv rt S | rt S t d }t | dz
}|t j j }t | }d}| r|dz }|dz
}| t | D ]}d}|||fv r4t j d| dz
| }d|cxk r | dz
k sn J |||fv 4t ||| } | ||fv rVt d| D ],}
t | d| } | |k r n| |k rt c c S -t c S t S )a: Perform a Miller-Rabin primality test on an integer.
The test is specified in Section C.3.1 of `FIPS PUB 186-4`__.
:Parameters:
candidate : integer
The number to test for primality.
iterations : integer
The maximum number of iterations to perform before
declaring a candidate a probable prime.
randfunc : callable
An RNG function where bases are taken from.
:Returns:
``Primality.COMPOSITE`` or ``Primality.PROBABLY_PRIME``.
.. __: http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf
r r Nr r )
min_inclusive
max_inclusiverandfunc)
isinstancer PROBABLY_PRIMEis_even COMPOSITEr newreadr random_rangepow) candidate
iterationsr one minus_onemaibasezjs w/builddir/build/BUILD/imunify360-venv-2.6.2/opt/imunify360/venv/lib64/python3.11/site-packages/Crypto/Math/Primality.pymiller_rabin_testr" - s ( i)) 'I&& L
!**C A
&&I:<<$ A A
))++ a Q ))++
#
# sI&&&'a"+a-%' ' 'D ---- A
------ sI&&&
a##i Aq!! AAq)$$AI~~Cxx c t | t st | } | dv rt S | s| rt
S d } | D ]6}| || fv r
t j || }|dk r t
c S |dk r n7| dz }| dz
}t d }t d }t d }t d } t |dz
dd D ]F}
| | ||z }|| z }| | | |z } | |z } |
|| | r| | z
} | dz } | | z } | |
r| | || z
}| r|| z
}|dz }|| z }| | |
|| | r|| z
}|dz }|| z }| | | | H|dk rt S t
S )a_ Perform a Lucas primality test on an integer.
The test is specified in Section C.3.3 of `FIPS PUB 186-4`__.
:Parameters:
candidate : integer
The number to test for primality.
:Returns:
``Primality.COMPOSITE`` or ``Primality.PROBABLY_PRIME``.
.. __: http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf
r c 3 > K d} | V | dk r| dz
} n| dz } | } )Nr Tr r )values r! alternatezlucas_test.