Ë
    ûûàgœ  ã                   óÄ   — d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlm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„ Zd„ Zd„ Zd„ Zd„ Zy)é    )Úurlparse)Úcache)ÚImproperlyConfigured)ÚHttp404)Úreverse©Ú	urlencode)ÚOneLogin_Saml2_Auth)ÚOneLogin_Saml2_Constants)Ú OneLogin_Saml2_IdPMetadataParser)Úget_adapter)Ú	SocialApp)ÚSAMLProviderc                 ó¦   — t        «       }	 |j                  | t        j                  |¬«      S # t        j
                  $ r t        d|› �«      ‚w xY w)N)ÚproviderÚ	client_idz"no SocialApp found with client_id=)r   Úget_appr   Úidr   ÚDoesNotExistr   )ÚrequestÚorganization_slugÚadapters      úh/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/saml/utils.pyÚget_app_or_404r      s_   € Ü‹m€GðPØ�‰ØœlŸo™oÐ9Jð ó 
ð 	
øô ×!Ñ!ò PÜÐ:Ð;LÐ:MÐNÓOÐOðPús	   Œ!. ®"Ac                 óÎ   — | j                  «       rdnd| j                  d   | j                  d   | j                  j                  «       | j                  j                  «       dœ}|S )NÚonÚoffÚ	HTTP_HOSTÚ	PATH_INFO)ÚhttpsÚ	http_hostÚscript_nameÚget_dataÚ	post_data)Ú	is_secureÚMETAÚGETÚcopyÚPOST)r   Úresults     r   Úprepare_django_requestr+      sX   € à ×*Ñ*Ô,‘°%Ø—\‘\ +Ñ.Ø—|‘| KÑ0Ø—K‘K×$Ñ$Ó&à—\‘\×&Ñ&Ó(ñ€Fð €Mó    c                 ó>  — | j                  t        d|g¬«      «      }| j                  t        d|g¬«      «      }| j                  t        d|g¬«      «      }|j                  di «      }|j                  d«      }|xs ||t        j                  dœ|t        j
                  dœdœ}|j                  d	i «      }	|	j                  d
«      �|	d
   |d
<   |	j                  d«      r|	d   |d<   |	j                  d«      �|	d   |d<   |	j                  d«      �|	d   |d<   |S )NÚsaml_acs)ÚargsÚsaml_slsÚsaml_metadataÚspÚ	entity_id)ÚurlÚbinding)ÚentityIdÚassertionConsumerServiceÚsingleLogoutServiceÚadvancedÚx509certÚx509cert_newÚx509certNewÚprivate_keyÚ
privateKeyÚname_id_formatÚNameIDFormat)Úbuild_absolute_urir   Úgetr   ÚBINDING_HTTP_POSTÚBINDING_HTTP_REDIRECT)
r   Úprovider_configÚorgÚacs_urlÚsls_urlÚmetadata_urlÚ
_sp_configÚsp_entity_idÚ	sp_configÚavds
             r   Úbuild_sp_configrN   (   s2  € Ø×(Ñ(¬°À3À%Ô)HÓI€GØ×(Ñ(¬°À3À%Ô)HÓI€GØ×-Ñ-¬g°oÈSÈEÔ.RÓS€Lð !×$Ñ$ T¨2Ó.€JØ—>‘> +Ó.€Là Ò0 LàÜ/×AÑAñ%
ð
 Ü/×EÑEñ 
ñ
€Ið ×
Ñ
˜j¨"Ó
-€CØ
‡w�wˆzÓÐ&Ø # J¡ˆ	�*Ñà
‡w�wˆ~ÔØ#& ~Ñ#6ˆ	�-Ñ à
‡w�wˆ}ÓÐ)Ø"% mÑ"4ˆ	�,Ñà
‡w�wÐÓ Ð,Ø$'Ð(8Ñ$9ˆ	�.Ñ!àÐr,   c                 óö   — | d   }| d   }d|› d|› �}t        j                  |«      }|€Ot        j                  ||| j                  dd«      ¬«      }t        j                  ||| j                  dd	«      «       |S )
NrI   r3   zsaml.metadata.ú.Úmetadata_request_timeouté
   )r3   ÚtimeoutÚmetadata_cache_timeouti@8  )r   rB   r   Úparse_remoteÚset)Ú
idp_configrI   r3   Ú	cache_keyÚsaml_configs        r   Úfetch_metadata_url_configrZ   L   sŒ   € Ø˜nÑ-€LØ˜;Ñ'€IØ   ¨a°	¨{Ð;€IÜ—)‘)˜IÓ&€KØÐÜ6×CÑCØØØ—N‘NÐ#=¸rÓBô
ˆô
 	�	‰	ØØØ�N‰NÐ3°[ÓAô	
ð
 Ðr,   c                 ób  — |j                  di «      }i d|j                  dd«      “d|j                  dt        j                  «      “d|j                  dd«      “d	|j                  d
d«      “dd“d|j                  dt        j                  «      “d|j                  dd«      “d|j                  dd«      “d|j                  dd«      “d|j                  dd«      “d|j                  dd«      “d|j                  dd«      “d|j                  dd«      “d|j                  dd«      “d|j                  d d«      “d!|j                  d"d«      “d#|j                  d$d«      “}|j                  d%d«      |d&œ}|j                  d'«      }|r||d(<   |j                  d)«      }|r||d)<   |j                  d*«      }|€t	        d+«      ‚|j                  d,«      }	|	rt        |«      }
|
d*   |d*<   n1|d-   |d.   d/|d0   id1œ|d*<   |j                  d2«      }|r
d/|i|d*   d3<   t        | ||«      |d4<   |S )5Nr9   ÚauthnRequestsSignedÚauthn_request_signedFÚdigestAlgorithmÚdigest_algorithmÚlogoutRequestSignedÚlogout_request_signedÚlogoutResponseSignedÚlogout_response_signedÚrequestedAuthnContextÚsignatureAlgorithmÚsignature_algorithmÚsignMetadataÚmetadata_signedÚwantAssertionsEncryptedÚwant_assertion_encryptedÚwantAssertionsSignedÚwant_assertion_signedÚwantMessagesSignedÚwant_message_signedÚnameIdEncryptedÚname_id_encryptedÚwantNameIdEncryptedÚwant_name_id_encryptedÚallowSingleLabelDomainsÚallow_single_label_domainsÚrejectDeprecatedAlgorithmÚreject_deprecated_algorithmTÚ
wantNameIdÚwant_name_idÚwantAttributeStatementÚwant_attribute_statementÚallowRepeatAttributeNameÚallow_repeat_attribute_nameÚstrict)r}   ÚsecurityÚcontact_personÚcontactPersonÚorganizationÚidpz`idp` missingrI   r3   r:   r4   Ússo_url)r6   r:   ÚsingleSignOnServiceÚslo_urlr8   r2   )rB   r   ÚSHA256Ú
RSA_SHA256r   rZ   rN   )r   rE   rF   rM   Úsecurity_configrY   r   r�   r‚   rI   Úmeta_configr…   s               r   Úbuild_saml_configrŠ   _   s½  € Ø
×
Ñ
˜j¨"Ó
-€CðØ˜sŸw™wÐ'=¸uÓEðà˜3Ÿ7™7Ð#5Ô7O×7VÑ7VÓWðð 	˜sŸw™wÐ'>ÀÓFðð 	 §¡Ð(@À%Ó Hð	ð
 	  ðð 	˜cŸg™gØ!Ô#;×#FÑ#Fó
ðð 	˜Ÿ™Ð 1°5Ó9ðð 	" 3§7¡7Ð+EÀuÓ#Mðð 	 §¡Ð(?ÀÓ Gðð 	˜cŸg™gÐ&;¸UÓCðð 	˜3Ÿ7™7Ð#6¸Ó>ðð 	˜sŸw™wÐ'?ÀÓGðð 	" 3§7¡7Ð+GÈÓ#Oðð  	$ S§W¡WÐ-JÈDÓ%Qð!ð" 	�c—g‘g˜n¨eÓ4ð#ð$ 	! #§'¡'Ð*DÀdÓ"Kð%ð& 	# C§G¡GÐ,IÈ4Ó$Pð'€Oð, —'‘'˜( DÓ)Ø#ñ€Kð
 %×(Ñ(Ð)9Ó:€NÙØ'5ˆ�OÑ$à"×&Ñ& ~Ó6€LÙØ&2ˆ�NÑ#à
×
Ñ
˜eÓ
$€CØ
€{Ü" ?Ó3Ð3Ø—7‘7˜>Ó*€LÙÜ/°Ó4ˆØ(¨Ñ/ˆ�EÒð ˜KÑ(Ø˜J™Ø$)¨3¨y©>Ð#:ñ
ˆ�EÑð
 —'‘'˜)Ó$ˆÙØ9>ÀÐ8HˆK˜ÑÐ4Ñ5ä'¨°À#ÓF€K�ÑØÐr,   c                 ó    — d| i}t        |«      S )NÚstater   )rŒ   Úparamss     r   Úencode_relay_staterŽ   ˜   s   € Ø�uÐ€FÜ�VÓÐr,   c                 ó¦   — d}| rLt        | «      }|j                  s3|j                  s'|j                  r|j                  j	                  d«      r| }|S )zòAccording to the spec, RelayState need not be a URL, yet,
    ``onelogin.saml2` exposes it as ``return_to -- The target URL the user
    should be redirected to after login``. Also, for an IdP initiated login
    sometimes a URL is used.
    Nú/)r   ÚschemeÚnetlocÚpathÚ
startswith)Úrelay_stateÚnext_urlÚpartss      r   Údecode_relay_stater˜   �   sE   € ð €HÙÜ˜Ó%ˆØ�<Š<˜5Ÿ<š<¨E¯JªJ¸5¿:¹:×;PÑ;PÐQTÔ;UØ"ˆHØ€Or,   c                 óž   — t        | «      }t        | |j                  j                  |j                  j                  «      }t        ||«      }|S )N)r+   rŠ   ÚappÚsettingsr   r
   )r   r   ÚreqÚconfigÚauths        r   Ú
build_authrŸ   «   s?   € Ü
  Ó
)€CÜ˜w¨¯©×(=Ñ(=¸x¿|¹|×?UÑ?UÓV€FÜ˜s FÓ+€DØ€Kr,   N) Úurllib.parser   Údjango.core.cacher   Údjango.core.exceptionsr   Údjango.httpr   Údjango.urlsr   Údjango.utils.httpr	   Úonelogin.saml2.authr
   Úonelogin.saml2.constantsr   Ú"onelogin.saml2.idp_metadata_parserr   Úallauth.socialaccount.adapterr   Úallauth.socialaccount.modelsr   Ú-allauth.socialaccount.providers.saml.providerr   r   r+   rN   rZ   rŠ   rŽ   r˜   rŸ   © r,   r   ú<module>r­      sT   ðÝ !å #Ý 7Ý Ý Ý 'å 3Ý =Ý Oå 5Ý 2Ý FòPò	ò!òHò&6òrò
ór,   