Ë
    ûûàg~  ã                   ó†   — d dl Z d dlZd dlmZ d dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ d„ Zd„ Zd	„ Zd
eddfd„Zddœd„Zy)é    N)Úcache)Údefault_backend)Úload_pem_x509_certificate)Úget_adapter)ÚOAuth2Errorc                 ó�   — | j                  |«      }|r3t        |j                  d«      t        «       «      j	                  «       }|S y)zu
    Looks up the key given keys data of the form:

        {"<kid>": "-----BEGIN CERTIFICATE-----
CERTIFICATE"}
    Úutf8N)Úgetr   Úencoder   Ú
public_key)Ú	keys_dataÚkidÚkeyr   s       úc/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/allauth/socialaccount/internal/jwtkit.pyÚlookup_kid_pem_x509_certificater      sG   € ð �-‰-˜Ó
€CÙ
Ü.Ø�J‰J�vÓ¤Ó 1ó
ç
‰*‹,ð 	ð Ðð	 ó    c                 ó¨   — | d   D ]J  }|d   |k(  sŒt         j                  j                  j                  t	        j
                  |«      «      }|c S  y)a1  
    Looks up the key given keys data of the form:

        {
          "keys": [
            {
              "kty": "RSA",
              "kid": "W6WcOKB",
              "use": "sig",
              "alg": "RS256",
              "n": "2Zc5d0-zk....",
              "e": "AQAB"
            }]
        }
    Úkeysr   N)ÚjwtÚ
algorithmsÚRSAAlgorithmÚfrom_jwkÚjsonÚdumps)r   r   Údr   s       r   Úlookup_kid_jwkr      sK   € ð  �vÑò ˆØˆU‰8�s‹?ÜŸ™×4Ñ4×=Ñ=¼d¿j¹jÈ»mÓLˆJØÒñr   c                 ó
  — t        j                  | «      }|d   }|d   }t        «       j                  «       j	                  |«      }|j                  «        |j                  «       } |||«      }|st        d|› d�«      ‚||fS )Nr   ÚalgzInvalid 'kid': 'ú')r   Úget_unverified_headerr   Úget_requests_sessionr
   Úraise_for_statusr   r   )	Ú
credentialÚkeys_urlÚlookupÚheaderr   r   Úresponser   r   s	            r   Ú	fetch_keyr(   2   sƒ   € Ü×&Ñ& zÓ2€Fà
�‰-€CØ
�‰-€CÜ‹}×1Ñ1Ó3×7Ñ7¸ÓA€HØ×ÑÔØ—‘“€IÙ
�˜CÓ
 €CÙÜÐ,¨S¨E°Ð3Ó4Ð4Ø�ˆ8€Or   ÚdataÚreturnc                 óü   — | j                  d«      }| j                  d«      }| j                  d«      }|�|�|€y|t        j                  «       z
  }d|› d|› �}t        j                  |d|¬«      st	        d	«      ‚y)
zE
    Put the JWT token on a blacklist to prevent replay attacks.
    ÚissÚexpÚjtiNzjwt:iss=z,jti=T)r   ÚvalueÚtimeoutztoken already used)r
   Útimer   Úaddr   )r)   r,   r-   r.   r0   r   s         r   Ú
verify_jtir3   @   s~   € ð �(‰(�5‹/€CØ
�(‰(�5‹/€CØ
�(‰(�5‹/€CØ
€{�c�k S [ØØ”D—I‘I“KÑ€GØ�S�E˜˜s˜eÐ
$€CÜ�9‰9˜ D°'Õ:ÜÐ.Ó/Ð/ð ;r   T)Úverify_signaturec           	      óà   — 	 |rt        | ||«      \  }}|g}nd}d }t        j                  | ||ddddœ|||¬«      }	t        |	«       |	S # t        j                  $ r}
t        d«      |
‚d }
~
ww xY w)NÚ T)r4   Ú
verify_issÚ
verify_audÚ
verify_exp)r   ÚoptionsÚissuerÚaudiencer   zInvalid id_token)r(   r   Údecoder3   Ú
PyJWTErrorr   )r#   r$   r;   r<   Ú
lookup_kidr4   r   r   r   r)   Úes              r   Úverify_and_decoderA   O   sŽ   € ð5ÙÜ  ¨X°zÓB‰HˆC�Ø˜‰JàˆCØˆJÜ�z‰zØØà$4Ø"Ø"Ø"ñ	ð ØØ!ô
ˆô 	�4ÔØˆøÜ�>‰>ò 5ÜÐ,Ó-°1Ð4ûð5ús   ‚AA	 Á	A-ÁA(Á(A-)r   r1   Údjango.core.cacher   r   Úcryptography.hazmat.backendsr   Úcryptography.x509r   Úallauth.socialaccount.adapterr   Ú-allauth.socialaccount.providers.oauth2.clientr   r   r   r(   Údictr3   rA   © r   r   ú<module>rI      sK   ðÛ Û å #ã 
Ý 8Ý 7å 5Ý Eòòò,ð0�Tð 0˜dó 0ð  MQõ5r   