Ë
    Ü_Ëi‹%  ã                  óH  — d Z ddlmZ ddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
mZmZ ddlmZ ddlmZmZmZmZmZ dd	lmZ  eg d
¢«      Z	  G d„ d«      Z edg d¢«      Z	  edg d¢«      Z	  eddg«      Z	 dd„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Z 	 	 	 	 	 	 dd„Z!y)z6Constants and types shared across multiple auth types.é    )ÚannotationsN)Ústandard_b64encode)Ú
namedtuple)ÚAnyÚDictÚMappingÚOptional)ÚBinary)Ú_OIDCAzureCallbackÚ_OIDCGCPCallbackÚ_OIDCK8SCallbackÚ_OIDCPropertiesÚ_OIDCTestCallback)ÚConfigurationError)ÚGSSAPIúMONGODB-OIDCúMONGODB-X509úMONGODB-AWSÚPLAINzSCRAM-SHA-1zSCRAM-SHA-256ÚDEFAULTc                  ó@   — e Zd ZdZ ed «      Zdd„Zdd„Zdd„Zd	d„Z	y)
Ú_Cache©Údatac                ó   — d | _         y ©Nr   ©Úselfs    úV/var/www/pod-logistic/pod-api/venv/lib/python3.12/site-packages/pymongo/auth_shared.pyÚ__init__z_Cache.__init__7   s	   € Øˆ�	ó    c                ó0   — t        |t        «      ryt        S )NT©Ú
isinstancer   ÚNotImplemented©r   Úothers     r   Ú__eq__z_Cache.__eq__:   s   € ä�eœVÔ$ØÜÐr!   c                ó0   — t        |t        «      ryt        S )NFr#   r&   s     r   Ú__ne__z_Cache.__ne__@   s   € Ü�eœVÔ$ØÜÐr!   c                ó   — | j                   S r   )Ú	_hash_valr   s    r   Ú__hash__z_Cache.__hash__E   s   € Ø�~‰~Ðr!   N)ÚreturnÚNone)r'   Úobjectr.   Úbool)r.   Úint)
Ú__name__Ú
__module__Ú__qualname__Ú	__slots__Úhashr,   r    r(   r*   r-   © r!   r   r   r   2   s$   „ Ø€Iá�X“€Ióóóô
r!   r   ÚMongoCredential)Ú	mechanismÚsourceÚusernameÚpasswordÚmechanism_propertiesÚcacheÚGSSAPIProperties©Úservice_nameÚcanonicalize_host_nameÚservice_realmÚservice_hostÚ_AWSPropertiesÚaws_session_tokenc                óH   — g d¢}| dv r| dv S | |vrt        d| › d|› �«      ‚| S )N)FTÚnoneÚforwardÚforwardAndReverse)ÚtrueÚfalseTF)rL   TzCANONICALIZE_HOST_NAME 'z' not in valid options: )Ú
ValueError)ÚvalueÚvalid_namess     r   Ú _validate_canonicalize_host_namerQ   Z   sD   € ÚG€KØÐ.Ñ.Ø˜Ð&Ð&à�KÑÜÐ3°E°7Ð:RÐS^ÐR_Ð`ÓaÐaØ€Lr!   c           	     ó(  — | dvr|€t        | › d�«      ‚| dk(  r•|�|dk7  rt        d«      ‚|j                  di «      }|j                  dd	«      }|j                  d
d«      }|j                  dd«      }	t        |	«      }	|j                  d«      }
t	        ||	|
|¬«      }t        | d|||d«      S | dk(  r/|�t        d«      ‚|�|dk7  rt        d«      ‚t        | d|ddd«      S | dk(  r`|�|€t        d«      ‚|�|dk7  rt        d«      ‚|j                  di «      }|j                  d«      }t        |¬«      }t        | d|||d«      S | dk(  �rx|j                  di «      }|j                  d«      }|j                  d«      }|j                  d«      }|j                  dd«      }g d¢}|j                  d|«      }|j                  dd«      �|€t        d«      ‚d }|�d!}t        |«      ‚|s|r|�t        |«      ‚|r›|r™d"}t        |«      ‚|�|d#k(  r|�d$}t        |«      ‚t        «       }nk|d%k(  rd}|st        d&«      ‚t        |«      }nK|d'k(  rd}|st        d(«      ‚t        |«      }n+|d)k(  rd}t        «       }nt        d*|› �«      ‚t        |«      ‚t        ||||||xs d¬+«      }t        | d|||t        «       «      S | d,k(  r|xs |xs d}t        | |||dd«      S |xs |xs d-}|€t        d.«      ‚t        | |||dt        «       «      S )/z8Build and return a mechanism specific credentials tuple.)r   r   r   Nz requires a usernamer   z	$externalz:authentication source must be $external or None for GSSAPIÚauthmechanismpropertiesÚSERVICE_NAMEÚmongodbÚSERVICE_HOSTÚCANONICALIZE_HOST_NAMErM   ÚSERVICE_REALMrA   r   z+Passwords are not supported by MONGODB-X509z@authentication source must be $external or None for MONGODB-X509r   z;username without a password is not supported by MONGODB-AWSz?authentication source must be $external or None for MONGODB-AWSÚAWS_SESSION_TOKEN)rG   r   ÚOIDC_CALLBACKÚOIDC_HUMAN_CALLBACKÚENVIRONMENTÚTOKEN_RESOURCEÚ )z*.mongodb.netz*.mongodb-dev.netz*.mongodb-qa.netz*.mongodbgov.netÚ	localhostz	127.0.0.1z::1z*.mongo.comÚ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_resourcer<   r   ÚadminzA password is required)r   rN   ÚgetrQ   r@   r9   rF   r   r   r   r   r   r   )Úmechr;   ÚuserÚpasswdÚextraÚdatabaseÚ
propertiesrB   rE   ÚcanonicalizerD   ÚpropsrG   Ú	aws_propsre   rf   Úenvironri   Údefault_allowedrh   ÚmsgÚ
oidc_propsÚsource_databases                          r   Ú_build_credentials_tuplerz   d   sÁ  € ð ÐBÑBÀtÀ|Ü  D 6Ð)=Ð!>Ó?Ð?ØˆxÒØÐ &¨KÒ"7ÜÐYÓZÐZØ—Y‘YÐ8¸"Ó=ˆ
Ø!—~‘~ n°iÓ@ˆØ!—~‘~ n°dÓ;ˆØ!—~‘~Ð&>ÀÓHˆÜ7¸ÓEˆØ"Ÿ™ Ó7ˆÜ Ø%Ø#/Ø'Ø%ô	
ˆô ˜t [°$¸ÀÀtÓLÐLØ	�Ò	ØÐÜ$Ð%RÓSÐSØÐ &¨KÒ"7ÜÐ_Ó`Ð`ä˜t [°$¸¸dÀDÓIÐIØ	�Ò	ØÐ  Ü$Ð%bÓcÐcØÐ &¨KÒ"7Ü$ØQóð ð —Y‘YÐ8¸"Ó=ˆ
Ø&ŸN™NÐ+>Ó?ÐÜ"Ð5FÔGˆ	ä˜t [°$¸À	È4ÓPÐPØ	�Ó	Ø—Y‘YÐ8¸"Ó=ˆ
Ø—>‘> /Ó2ˆØ#Ÿ™Ð(=Ó>ˆØ—.‘. Ó/ˆØ#Ÿ™Ð(8¸"Ó=ˆò	
ˆð #Ÿ™ ¸ÓHˆØ�>‰>˜/¨4Ó0Ð<ÀÐAWÜ$Ð%[Ó\Ð\àdð 	ð ÐØ=ˆCÜ$ SÓ)Ð)Ù‘~ØÐ"Ü(¨Ó-Ð-Ù™NØM�Ü(¨Ó-Ð-ØÐ Ø˜&Ò ØÐ#ØW�CÜ,¨SÓ1Ð1Ü,Ó.‘Ø˜GÒ#Ø�Ù%Ü,Ønóð ô .¨nÓ=‘Ø˜EÒ!Ø�Ù%Ü,Øióð ô ,¨NÓ;‘Ø˜EÒ!Ø�Ü+Ó-‘ä(Ð+VÐW^ÐV_Ð)`ÓaÐaä$ SÓ)Ð)ä$ØØ)ØØ'Ø)Ø’Z˜Rô
ˆ
ô ˜t [°$¸À
ÌFËHÓUÐUà	�ŠØ Ò; HÒ;°ˆÜ˜t _°d¸FÀDÈ$ÓOÐOà Ò7 HÒ7°ˆØˆ>Ü$Ð%=Ó>Ð>Ü˜t _°d¸FÀDÌ&Ë(ÓSÐSr!   c           
     ó„   — dj                  t        | |«      D ��cg c]  \  }}t        ||z  g«      ‘Œ c}}«      S c c}}w )zXOR two byte strings together.r!   )ÚjoinÚzipÚbytes)ÚfirÚsecÚxÚys       r   Ú_xorrƒ   ã   s3   € à�8‰8´°C¸³×>©¨¨1”U˜A ™E˜7•^Ó>Ó?Ð?ùÓ>s   ›<
c                óD   — t        d„ | j                  d«      D «       «      S )z-Split a scram response into key, value pairs.c              3  óž   K  — | ]E  }t        j                  t         j                  t        t        f   |j	                  d d«      «      –— ŒG y­w)ó   =é   N)ÚtypingÚcastÚTupler~   Úsplit)Ú.0Úitems     r   ú	<genexpr>z(_parse_scram_response.<locals>.<genexpr>ê   s;   è ø€ ò àô 	�‰”F—L‘L¤¬ Ñ.°·
±
¸4ÀÓ0C×Dñùs   ‚AAó   ,)Údictr‹   )Úresponses    r   Ú_parse_scram_responser’   è   s%   € äñ à—N‘N 4Ó(ôó ð r!   c                ó  — | j                   }|j                  d«      j                  dd«      j                  dd«      }t        t	        j
                  d«      «      }d|z   dz   |z   }d	|t        d
|z   «      d	ddidœ}|||fS )Nzutf-8r†   s   =3Dr�   s   =2Cé    s   n=s   ,r=r‡   s   n,,ÚskipEmptyExchangeT)Ú	saslStartr:   ÚpayloadÚautoAuthorizeÚoptions)r<   ÚencodeÚreplacer   ÚosÚurandomr
   )Úcredentialsr:   r<   rm   ÚnonceÚ
first_bareÚcmds          r   Ú_authenticate_scram_startr¢   ð   s’   € ð ×#Ñ#€HØ�?‰?˜7Ó#×+Ñ+¨D°&Ó9×AÑAÀ$ÈÓO€DÜœrŸz™z¨"›~Ó.€EØ˜‘ Ñ&¨Ñ.€Jð ØÜ˜& :Ñ-Ó.ØØ'¨Ð.ñ€Cð �*˜cÐ!Ð!r!   )rO   ú
str | boolr.   r£   )rl   Ústrr;   úOptional[str]rm   r¥   rn   r¥   ro   zMapping[str, Any]rp   r¥   r.   r9   )r   r~   r€   r~   r.   r~   )r‘   r~   r.   zDict[bytes, bytes])rž   r9   r:   r¤   r.   z4tuple[bytes, bytes, typing.MutableMapping[str, Any]])"Ú__doc__Ú
__future__r   rœ   rˆ   Úbase64r   Úcollectionsr   r   r   r   r	   Úbsonr
   Úpymongo.auth_oidc_sharedr   r   r   r   r   Úpymongo.errorsr   Ú	frozensetÚ
MECHANISMSr   r9   r@   rF   rQ   rz   rƒ   r’   r¢   r8   r!   r   ú<module>r¯      s  ðñ  =Ý "ã 	Û Ý %Ý "ß /Ó /å ÷õ õ .áò	ó€
ð :÷ñ ñ. ØÚTó€ð ?ñ ØÒcóÐ ð 6ñ Ð,Ð/BÐ.CÓD€Ø :óð|TØ
ð|Tàð|Tð ð|Tð ð	|Tð
 ð|Tð ð|Tð ó|Tó~@ó
ð"Ø ð"Ø-0ð"à9ô"r!   