o
    ¾­§i  ã                   @   s\   d Z ddlZddlZddlZddlmZ ddedefdd„Zdd	edeeef fd
d„Z	dS )zPKCE-related helper functions.é    N)ÚTupleé`   ÚlengthÚreturnc                 C   sF   t dt| dƒƒ} t| d d ƒ}t t |¡¡ d¡ dd¡d| … S )	z%Get code verifier for PKCE challenge.é+   é€   é   é   úutf-8ú=Ú N)	ÚmaxÚminÚintÚbase64Úurlsafe_b64encodeÚosÚurandomÚdecodeÚreplace)r   Zbytes_length© r   úG/home/app/Keep/.python/lib/python3.10/site-packages/fastapi_sso/pkce.pyÚget_code_verifier	   s   &r   Úverifier_lengthc                 C   s8   t | ƒ}t t | d¡¡ ¡ ¡ d¡ dd¡}||fS )z6Get tuple of (verifier, challenge) for PKCE challenge.r
   r   r   )	r   r   r   ÚhashlibÚsha256ÚencodeÚdigestr   r   )r   Zcode_verifierZcode_challenger   r   r   Úget_pkce_challenge_pair   s   ýr   )r   )
Ú__doc__r   r   r   Útypingr   r   Ústrr   r   r   r   r   r   Ú<module>   s     