
    )Jf                         d dl mZ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dZd ZdS )    )	parse_qslurlparse)cache)ImproperlyConfigured)Http404)reverse	urlencode)OneLogin_Saml2_Constants) OneLogin_Saml2_IdPMetadataParser)get_adapter)	SocialApp   )SAMLProviderc                     t                      }	 |                    | 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      m/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/allauth/socialaccount/providers/saml/utils.pyget_app_or_404r      sr    mmGPlo9J  
 
 	
 ! P P PN;LNNOOOPs	   !2 "Ac                     |                                  rdnd| j        d         | j        d         | 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,      sc     **,,7%\+.|K0K$$&&\&&(( F M    c                 P   |                      t          d|g                    }|                      t          d|g                    }|                      t          d|g                    }||t          j        d|t          j        dd}|                    di           }|                    d          |d         |d<   |                    d	          r|d	         |d
<   |                    d          |d         |d<   |                    d          |d         |d<   |S )Nsaml_acs)argssaml_slssaml_metadata)urlbinding)entityIdassertionConsumerServicesingleLogoutServiceadvancedx509certx509cert_newx509certNewprivate_key
privateKeyname_id_formatNameIDFormat)build_absolute_urir   r   BINDING_HTTP_POSTBINDING_HTTP_REDIRECTget)r   provider_configorgacs_urlsls_urlmetadata_url	sp_configavds           r   build_sp_configrK   (   sC   ((3%)H)H)HIIG((3%)H)H)HIIG--goSE.R.R.RSSL /A%
 %

 /E 
  

 
I 

j"
-
-C
wwz& #J	*
ww~ 7#&~#6	- 
ww})"%m"4	,
ww  ,$'(8$9	.!r-   c                    | d         }| d         }d| d| }t          j        |          }|Ut          j        |||                     dd                    }t          j        |||                     dd	                     |S )
NrH   	entity_idzsaml.metadata..metadata_request_timeout
   )rM   timeoutmetadata_cache_timeouti@8  )r   rC   r   parse_remoteset)
idp_configrH   rM   	cache_keysaml_configs        r   fetch_metadata_url_configrX   G   s    n-L;'I;;;	;;I)I&&K6CNN#=rBB
 
 

 		NN3[AA	
 	
 	

 r-   c                 @   |                     di           }i d|                     dd          d|                     dt          j                  d|                     dd          d	|                     d
d          ddd|                     dt          j                  d|                     dd          d|                     dd          d|                     dd          d|                     dd          d|                     dd          d|                     dd          d|                     dd          d|                     dd          d|                     d d          d!|                     d"d          d#|                     d$d          }|                     d%d          |d&}|                     d'          }|r||d(<   |                     d)          }|r||d)<   |                     d*          }|t	          d+          |                     d,          }	|	rt          |          }
|
d*         |d*<   nA|d-         |d.         d/|d0         id1|d*<   |                     d2          }|rd/|i|d*         d3<   t          | ||          |d4<   |S )5Nr8   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` missingrH   rM   r9   r3   sso_url)r5   r9   singleSignOnServiceslo_urlr7   sp)rC   r   SHA256
RSA_SHA256r   rX   rK   )r   rD   rE   rJ   security_configrW   r}   r   r   rH   meta_configr   s               r   build_saml_configr   Z   s*   


j"
-
-Csww'=uEE377#57O7VWW 	sww'>FF 	(@% H H	
 	  	cgg!#;#F
 
 	 1599 	"377+Eu#M#M 	(? G G 	cgg&;UCC 	377#6>> 	sww'?GG 	"377+G#O#O  	$SWW-JD%Q%Q!" 	cggne44#$ 	!#''*Dd"K"K%& 	#CGG,I4$P$P'O, ''(D))# K
 %(()9::N 6'5O$"&&~66L 3&2N#


e
$
$C
{"?33377>**L I/44(/E K(J$)3y>#:
 
E
 '')$$ 	I9>8HK45'#FFKr-   Nc                 @    i }| r| |d<   |r||d<   t          |          S )Nprocessnextr	   )r   next_urlparamss      r   encode_relay_stater      s8    F $#y "!vVr-   c                     i }| r`t          |           }|j        s(|j        s!|j        r |j                            d          r| |d<   nt          t          |                     }|S )zAccording 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.
    /r   )r   schemenetlocpath
startswithdictr   )relay_stateretpartss      r   decode_relay_stater      sw     C /%%< 	/5< 	/EJ 	/5:;P;PQT;U;U 	/%CKKy--..CJr-   )NN)urllib.parser   r   django.core.cacher   django.core.exceptionsr   django.httpr   django.urlsr   django.utils.httpr
   onelogin.saml2.constantsr   "onelogin.saml2.idp_metadata_parserr   allauth.socialaccount.adapterr   allauth.socialaccount.modelsr   r   r   r   r,   rK   rX   r   r   r    r-   r   <module>r      sM   , , , , , , , , # # # # # # 7 7 7 7 7 7             ' ' ' ' ' ' = = = = = = O O O O O O 5 5 5 5 5 5 2 2 2 2 2 2 " " " " " "P P P	 	 	  >  &6 6 6r       r-   