
    (phy              	          S r SSKJrJrJr  SS\S\S\S\4S jjrS/r	\
S	:X  a`  \" S
5        SSKr\" S5       H?  r\R                  " 5       u  rr\(       a    O#\S-  S:X  d  M+  \(       d  M4  \" S\-  5        MA     \" S5        gg)zFunctions for PKCS#1 version 2 encryption and signing

This module implements certain functionality from PKCS#1 version 2. Main
documentation is RFC 2437: https://tools.ietf.org/html/rfc2437
    )commonpkcs1	transformseedlengthhasherreturnc                   ^ ^  [         R                  T   " 5       R                  nUSU-  :  a  [        SR                  UTS95      eSR                  UU 4S	 j[        [        R                  " X5      S
-   5       5       5      nUSU $ ! [         aR  n[	        SR                  SR                  [        [         R                  R                  5       5      5      S95      UeSnAff = f)aL  
MGF1 is a Mask Generation Function based on a hash function.

A mask generation function takes an octet string of variable length and a
desired output length as input, and outputs an octet string of the desired
length. The plaintext-awareness of RSAES-OAEP relies on the random nature of
the output of the mask generation function, which in turn relies on the
random nature of the underlying hash.

:param bytes seed: seed from which mask is generated, an octet string
:param int length: intended length in octets of the mask, at most 2^32(hLen)
:param str hasher: hash function (hLen denotes the length in octets of the hash
    function output)

:return: mask, an octet string of length `length`
:rtype: bytes

:raise OverflowError: when `length` is too large for the specified `hasher`
:raise ValueError: when specified `hasher` is invalid
z=Invalid `hasher` specified. Please select one of: {hash_list}z, )	hash_listNl        zmDesired length should be at most 2**32 times the hasher's output length ({hash_length} for {hasher} function))hash_lengthr       c           	   3   z   >#    U  H0  n[         R                  " T[        R                  " US S9-   TS9v   M2     g7f)   )	fill_size)method_nameN)r   compute_hashr   	int2bytes).0counterr   r   s     ?/var/www/html/venv/lib/python3.13/site-packages/rsa/pkcs1_v2.py	<genexpr>mgf1.<locals>.<genexpr>H   sA      
 GG	 	9&&w!<<	
 Gs   8;   )r   HASH_METHODSdigest_sizeKeyError
ValueErrorformatjoinsortedkeysOverflowErrorranger   ceil_div)r   r   r   r   exoutputs   ` `   r   mgf1r'      s    ,((02>> ;&';;A6' <B <
 	
 XX 
 V__VAAEF F '6?;  KRR))F5+=+=+B+B+D$EF S 
 		s   "B	 	
C%AC  C%r'   __main__z'Running doctests 1000x or until failureNi  d   z%i timeszDoctests done)zSHA-1)__doc__rsar   r   r   bytesintstrr'   __all____name__printdoctestr#   counttestmodfailurestests r   r   <module>r8      s    5u 5c 53 5U 5r  z	
34t#OO-53;!*u$%  
/ r   