+
    8i%                    6   R t ^ RIHt ^ RIt^ RIt^ RIHt ^ RIHt ^ RIH	t	H
t
HtHt ^ RIHt ^ RIHtHtHtHtHt ^ RIHt ]! . RO4      t  ! R	 R
4      t]! R. RO4      t ]! R. RO4      t ]! RR.4      t R R ltR R ltR R ltR R lt R R lt!R# )z6Constants and types shared across multiple auth types.)annotationsN)standard_b64encode)
namedtuple)AnyDictMappingOptional)Binary)_OIDCAzureCallback_OIDCGCPCallback_OIDCK8SCallback_OIDCProperties_OIDCTestCallback)ConfigurationErrorc                  Z    ] tR t^2tR	t]! R 4      tR R ltR R ltR R lt	R R lt
R	tR
# )_Cachec                   V ^8  d   QhRR/# )   returnNone )formats   "Q/var/www/html/photoedit/myenv/lib/python3.14/site-packages/pymongo/auth_shared.py__annotate___Cache.__annotate__7   s      $     c                	    R V n         R # Ndataselfs   &r   __init___Cache.__init__7   s	    	r   c                    V ^8  d   QhRRRR/# r   otherobjectr   boolr   )r   s   "r   r   r   :   s      F t r   c                	>    \        V\        4      '       d   R # \        # )T
isinstancer   NotImplementedr!   r&   s   &&r   __eq___Cache.__eq__:   s    eV$$r   c                    V ^8  d   QhRRRR/# r%   r   )r   s   "r   r   r   @   s      F t r   c                	>    \        V\        4      '       d   R # \        # )Fr*   r-   s   &&r   __ne___Cache.__ne__@   s    eV$$r   c                   V ^8  d   QhRR/# )r   r   intr   )r   s   "r   r   r   E   s      # r   c                	    V P                   # r   )	_hash_valr    s   &r   __hash___Cache.__hash__E   s    ~~r   r   N)__name__
__module____qualname____firstlineno__	__slots__hashr7   r"   r.   r2   r8   __static_attributes__r   r   r   r   r   2   s)    IXI
 r   r   MongoCredentialGSSAPIProperties_AWSPropertiesaws_session_tokenc                    V ^8  d   QhRRRR/# )r   valuez
str | boolr   r   )r   s   "r   r   r   Z   s      J : r   c                T    . ROpV R9   d   V R9   # W9  d   \        RV  RV 24      hV # )FzCANONICALIZE_HOST_NAME 'z' not in valid options: )FTnoneforwardforwardAndReverse)truefalseTF)rK   T)
ValueError)rF   valid_namess   & r    _validate_canonicalize_host_namerO   Z   sB    GK..&&3E7:RS^R_`aaLr   c               4    V ^8  d   QhRRRRRRRRRRR	RR
R/# )r   mechstrsourcezOptional[str]userpasswdextrazMapping[str, Any]databaser   rA   r   )r   s   "r   r   r   d   s`     |T |T
|T|T |T 	|T
 |T |T |Tr   c           	        V R-9  d   Vf   \        V  R24      hV R8X  d   Ve   VR8w  d   \        R4      hVP                  R	/ 4      pVP                  R
R4      pVP                  RR4      pVP                  RR4      p	\        V	4      p	VP                  R4      p
\	        VV	V
VR7      p\        V RW#VR4      # V R8X  d6   Ve   \        R4      hVe   VR8w  d   \        R4      h\        V RVRRR4      # V R8X  dh   Ve   Vf   \        R4      hVe   VR8w  d   \        R4      hVP                  R	/ 4      pVP                  R4      p\        VR7      p\        V RW#VR4      # V R8X  Ed   VP                  R	/ 4      pVP                  R4      pVP                  R4      pVP                  R4      pVP                  RR4      p. R.OpVP                  RV4      pVP                  RR4      e   Vf   \        R4      hRpVe   Rp\        V4      hV'       g	   V'       d.   Ve   \        V4      hV'       d   V'       d   R p\        V4      hMVe   VR!8X  d   Ve   R"p\        V4      h\        4       pM}VR#8X  d"   RpV'       g   \        R$4      h\        V4      pMUVR%8X  d"   RpV'       g   \        R&4      h\        V4      pM-VR'8X  d   Rp\        4       pM\        R(V 24      h\        V4      h\        TTTTTT;'       g    RR)7      p\        V RW#V\        4       4      # V R*8X  d&   T;'       g    T;'       g    Rp\        V VW#RR4      # T;'       g    T;'       g    R+pVf   \        R,4      h\        V VW#R\        4       4      # )/z8Build and return a mechanism specific credentials tuple.MONGODB-X509MONGODB-AWSMONGODB-OIDCNz requires a usernameGSSAPIz	$externalz:authentication source must be $external or None for GSSAPIauthmechanismpropertiesSERVICE_NAMEmongodbSERVICE_HOSTCANONICALIZE_HOST_NAMErL   SERVICE_REALMservice_namecanonicalize_host_nameservice_realmservice_hostz+Passwords are not supported by MONGODB-X509z@authentication source must be $external or None for MONGODB-X509z;username without a password is not supported by MONGODB-AWSz?authentication source must be $external or None for MONGODB-AWSAWS_SESSION_TOKEN)rD   OIDC_CALLBACKOIDC_HUMAN_CALLBACKENVIRONMENTTOKEN_RESOURCE ALLOWED_HOSTSz4ALLOWED_HOSTS is only valid with OIDC_HUMAN_CALLBACKzVauthentication with MONGODB-OIDC requires providing either a callback or a environmentz)password is not supported by MONGODB-OIDCz5cannot set both OIDC_CALLBACK and OIDC_HUMAN_CALLBACKtestz;test environment for MONGODB-OIDC does not support usernameazurezTAzure environment for MONGODB-OIDC requires a TOKEN_RESOURCE auth mechanism propertygcpzOGCP provider for MONGODB-OIDC requires a TOKEN_RESOURCE auth mechanism propertyk8sz+unrecognized ENVIRONMENT for MONGODB-OIDC: )callbackhuman_callbackenvironmentallowed_hoststoken_resourceusernamePLAINadminzA password is required)rY   rZ   r[   )z*.mongodb.netz*.mongodb-dev.netz*.mongodb-qa.netz*.mongodbgov.net	localhostz	127.0.0.1z::1z*.mongo.com)r   rM   getrO   rB   rA   rC   r   r
   r   r   r   r   )rQ   rS   rT   rU   rV   rW   
propertiesrd   rg   canonicalizerf   propsrD   	aws_propsrs   rt   environrw   default_allowedrv   msg
oidc_propssource_databases   &&&&&&                 r   _build_credentials_tupler   d   s    BBt| D6)=!>??x&K"7YZZYY8"=
!~~ni@!~~nd;!~~&>H7E"7 %#/'%	
 t[$tLL		$%RSS&K"7_``t[$dDII		$%bcc&K"7$Q  YY8"=
&NN+>?"5FG	t[$	4PP		YY8"=
>>/2#(=>../#(8"=	
 #H>>/40<AW$%[\\d 	 =C$S))~"(--NM(-- & #WC,S11,.G#%,n  .n=E!%,i  ,N;E!+-(+VW^V_)`aa$S))$)')ZZR

 t[$
FHUU	 ;;H;;t_dD$OO 77H77>$%=>>t_dD&(SSr   c               $    V ^8  d   QhRRRRRR/# )r   firbytessecr   r   )r   s   "r   r   r      s&     @ @e @% @E @r   c           
         RP                  \        W4       UUu. uF  w  r#\        W#,          .4      NK  	  upp4      # u uppi )zXOR two byte strings together.r   )joinzipr   )r   r   xys   &&  r   _xorr      s1    88C>UAE7^>??>s   ?
c                    V ^8  d   QhRRRR/# )r   responser   r   zDict[bytes, bytes]r   )r   s   "r   r   r      s      E .@ r   c                D    \        R V P                  R4       4       4      # )z-Split a scram response into key, value pairs.c              3     "   T FK  p\         P                  ! \         P                  \        \        3,          VP	                  R ^4      4      x  KM  	  R# 5i)   =N)typingcastTupler   split).0items   & r   	<genexpr>(_parse_scram_response.<locals>.<genexpr>   s=      (D 	FLL.

40CDD(s   AA   ,)dictr   )r   s   &r   _parse_scram_responser      s%     NN4(  r   c               $    V ^8  d   QhRRRRRR/# )r   credentialsrA   	mechanismrR   r   z4tuple[bytes, bytes, typing.MutableMapping[str, Any]]r   )r   s   "r   r   r      s$     " " "-0"9"r   c                ,   V P                   pVP                  R 4      P                  RR4      P                  RR4      p\        \        P
                  ! ^ 4      4      pRV,           R,           V,           pR^RVR	\        R
V,           4      R^RRR//pWEV3# )zutf-8r   s   =3Dr   s   =2Cs   n=s   ,r=	saslStartr   payloads   n,,autoAuthorizeoptionsskipEmptyExchangeT)rx   encodereplacer   osurandomr	   )r   r   rx   rT   nonce
first_barecmds   &&     r   _authenticate_scram_startr      s     ##H??7#++D&9AA$ODrzz"~.E&.J 	QY6&:-.'.C c!!r   )r\   r[   rY   rZ   ry   zSCRAM-SHA-1zSCRAM-SHA-256DEFAULT)r   rS   rx   passwordmechanism_propertiescacherc   )"__doc__
__future__r   r   r   base64r   collectionsr   r   r   r   r   bsonr	   pymongo.auth_oidc_sharedr
   r   r   r   r   pymongo.errorsr   	frozenset
MECHANISMSr   rA   rB   rC   rO   r   r   r   r   r   r   r   <module>r      s     = " 	  % " / /   .	
 : . T ? c  6 ,/B.CD :|T~@
"r   