§
    •Åh–  ã                   ó0   — d Z ddlZddlZddlZdd„Zd„ ZdS )zm
Utility functions for implementing Proof Key for Code Exchange (PKCE) by OAuth
Public Clients

See RFC7636.
é    Né@   c                 ó   — t          j        t          j        | ¦  «        ¦  «                             d¦  «        }t          |¦  «        dk     rt          d¦  «        ‚t          |¦  «        dk    rt          d¦  «        ‚|S )aŸ  
    Generates a 'code_verifier' as described in section 4.1 of RFC 7636.

    This is a 'high-entropy cryptographic random string' that will be
    impractical for an attacker to guess.

    Args:
        n_bytes: integer between 31 and 96, inclusive. default: 64
            number of bytes of entropy to include in verifier.

    Returns:
        Bytestring, representing urlsafe base64-encoded random data.
    ó   =é+   z)Verifier too short. n_bytes must be > 30.é€   z(Verifier too long. n_bytes must be < 97.)Úbase64Úurlsafe_b64encodeÚosÚurandomÚrstripÚlenÚ
ValueError)Ún_bytesÚverifiers     új/home/visionen/pythonvenv/lib/python3.11/site-packages/oauth2client-4.1.3-py3.11.egg/oauth2client/_pkce.pyÚcode_verifierr      ss   € õ Ô'­¬
°7Ñ(;Ô(;Ñ<Ô<×CÒCÀDÑIÔI€Hõ ˆ8}„}rÒÐÝÐDÑEÔEÐEÝ	ˆX‰Œ˜Ò	Ð	ÝÐCÑDÔDÐDàˆó    c                 óœ   — t          j        | ¦  «                             ¦   «         }t          j        |¦  «                             d¦  «        S )a“  
    Creates a 'code_challenge' as described in section 4.2 of RFC 7636
    by taking the sha256 hash of the verifier and then urlsafe
    base64-encoding it.

    Args:
        verifier: bytestring, representing a code_verifier as generated by
            code_verifier().

    Returns:
        Bytestring, representing a urlsafe base64-encoded sha256 hash digest,
            without '=' padding.
    r   )ÚhashlibÚsha256Údigestr   r	   r   )r   r   s     r   Úcode_challenger   4   s>   € õ Œ^˜HÑ%Ô%×,Ò,Ñ.Ô.€FÝÔ# FÑ+Ô+×2Ò2°4Ñ8Ô8Ð8r   )r   )Ú__doc__r   r   r
   r   r   © r   r   ú<module>r      sY   ððð ð €€€Ø €€€Ø 	€	€	€	ðð ð ð ð29ð 9ð 9ð 9ð 9r   