
    (pha
                     p    S r SSKrSSKrSSKJrJr  S\S\4S jrS\S\4S jr	S\S\4S jr
S	\S\4S
 jrg)z(Functions for generating random numbers.    N)common	transformnbitsreturnc                     [        U S5      u  p[        R                  " U5      nUS:  aA  [        [        R                  " S5      5      nUSU-
  -  n[        R
                  " SU5      U-   nU$ )zReads 'nbits' random bits.

If nbits isn't a whole number of bytes, an extra byte will be appended with
only the lower bits set.
   r      B)divmodosurandomordstructpack)r   nbytesrbits
randomdatarandomvalues        >/var/www/html/venv/lib/python3.13/site-packages/rsa/randnum.pyread_random_bitsr      sf     5!$MF F#J qy"**Q-(E	![[k2Z?
    c                 ^    [        U 5      n[        R                  " U5      nUSU S-
  -  -  nU$ )z3Reads a random integer of approximately nbits bits.r	   )r   r   	bytes2int)r   r   values      r   read_random_intr   .   s8     "%(J
+E 
Q519ELr   c                 "    [        U 5      nUS-  $ )z\Reads a random odd integer of approximately nbits bits.

>>> read_random_odd_int(512) & 1
1
r	   )r   )r   r   s     r   read_random_odd_intr   ;   s     E"E 19r   maxvaluec                     [         R                  " U 5      nSn [        U5      nX0::  a   U$ US-  S:X  a  U(       a  US-  nUS-  nM/  )zReturns a random integer x with 1 <= x <= maxvalue

May take a very long time in specific situations. If maxvalue needs N bits
to store, the closer maxvalue is to (2 ** N) - 1, the faster this function
is.
r   
   r	   )r   bit_sizer   )r   r!   triesr   s       r   randintr#   H   s\     x(HE
) L 2:?u MH
 r   )__doc__r   r   rsar   r   intbytesr   r   r   r#    r   r   <module>r)      sa    / 
  !C E *
3 
3 

s 
s 
c c r   