
    AHj                     Z    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Zd	dedeeef   fdZ	y)
zPKCE-related helper functions.    N)Tuplelengthreturnc                     t        dt        | d            } t        | dz  dz        }t        j                  t        j                  |            j                  d      j                  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   bytes_lengths     H/root/tools/cai/cai_env/lib/python3.12/site-packages/fastapi_sso/pkce.pyget_code_verifierr   	   sd    S%&FvzA~&L##BJJ|$<=DDWMUUVY[]^_f`fgg    verifier_lengthc                     t        |       }t        j                  t        j                  |j                  d            j                               j                  d      j                  dd      }||fS )z6Get tuple of (verifier, challenge) for PKCE challenge.r   r   r   )	r   r   r   hashlibsha256encodedigestr   r   )r   code_verifiercode_challenges      r   get_pkce_challenge_pairr#      s^    %o6M  0D0DW0M!N!U!U!WX		b	  >**r   )`   )
__doc__r   r   r   typingr   r   strr   r#    r   r   <module>r)      sE    $   	 hc h3 h	+S 	+%S/ 	+r   