
    &gn&                    R   S r SSKJr  SSKrSSKrSSKJr  SSKJr  SSKJ	r	J
r
JrJr  SSKJr  SSKJrJrJrJrJr  SS	KJr  \" / S
Q5      r  " S S5      r\" S/ SQ5      r \" S/ SQ5      r \" SS/5      r SS jr              SS jrSS jrSS jr       SS jr!g)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                  P    \ rS rSrSr\" S 5      rSS jrS	S jrS	S jr	S
S jr
Srg)_Cache2   datac                    S U l         g Nr   selfs    XC:\Suresh\moveshuttle\MDcreated\moveengine\venv\Lib\site-packages\pymongo/auth_shared.py__init___Cache.__init__7   s	    	    c                :    [        U[        5      (       a  g[        $ )NT
isinstancer   NotImplementedr   others     r    __eq___Cache.__eq__:   s    eV$$r#   c                :    [        U[        5      (       a  g[        $ )NFr%   r(   s     r    __ne___Cache.__ne__@   s    eV$$r#   c                    U R                   $ r   )	_hash_valr   s    r    __hash___Cache.__hash__E   s    ~~r#   N)returnNone)r)   objectr3   bool)r3   int)__name__
__module____qualname____firstlineno__	__slots__hashr0   r!   r*   r-   r1   __static_attributes__ 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                P    / SQnU S;   a  U S;   $ X;  a  [        SU  SU 35      eU $ )N)FTnoneforwardforwardAndReverse)truefalseTF)rS   TzCANONICALIZE_HOST_NAME 'z' not in valid options: )
ValueError)valuevalid_namess     r     _validate_canonicalize_host_namerX   Z   sB    GK..&&3E7:RS^R_`aaLr#   c           	        U S;  a  Uc  [        U  S35      eU S:X  a  Ub  US:w  a  [        S5      eUR                  S0 5      nUR                  SS	5      nUR                  S
S5      nUR                  SS5      n	[        U	5      n	UR                  S5      n
[	        UU	U
US9n[        U SX#US5      $ U S:X  a2  Ub  [        S5      eUb  US:w  a  [        S5      e[        U SUSSS5      $ U S:X  a`  Ub  Uc  [        S5      eUb  US:w  a  [        S5      eUR                  S0 5      nUR                  S5      n[        US9n[        U SX#US5      $ U S:X  Ga  UR                  S0 5      nUR                  S5      nUR                  S5      nUR                  S5      nUR                  SS5      n/ SQnUR                  SU5      nUR                  SS5      b  Uc  [        S5      eS nUb  S!n[        U5      eU(       d  U(       a*  Ub  [        U5      eU(       a  U(       a  S"n[        U5      eOUb  US#:X  a  Ub  S$n[        U5      e[        5       nOxUS%:X  a   SnU(       d  [        S&5      e[        U5      nORUS':X  a   SnU(       d  [        S(5      e[        U5      nO,US):X  a  Sn[        5       nO[        S*U 35      e[        U5      e[        UUUUUU=(       d    SS+9n[        U SX#U[        5       5      $ U S,:X  a#  U=(       d    U=(       d    Sn[        U UX#SS5      $ U=(       d    U=(       d    S-nUc  [        S.5      e[        U UX#S[        5       5      $ )/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_NAMErT   SERVICE_REALMrH   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)rN   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::1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_resourcerC   r   adminzA password is required)r   rU   getrX   rG   r@   rM   r   r   r   r   r   r   )mechrB   userpasswdextradatabase
propertiesrI   rL   canonicalizerK   propsrN   	aws_propsrl   rm   environrp   default_allowedro   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))$)')ZR

 t[$
FHUU	 ;H;t_dD$OO 7H7>$%=>>t_dD&(SSr#   c           
         SR                  [        X5       VVs/ s H  u  p#[        X#-  /5      PM     snn5      $ s  snnf )zXOR two byte strings together.r#   )joinzipbytes)firsecxys       r    _xorr      s1    88C>UAE7^>??>s   <
c                D    [        S U R                  S5       5       5      $ )z-Split a scram response into key, value pairs.c              3     #    U  HG  n[         R                  " [         R                  [        [        4   UR	                  S S5      5      v   MI     g7f)   =   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   )responses    r    _parse_scram_responser      s%     NN4(  r#   c                   U R                   nUR                  S5      R                  SS5      R                  SS5      n[        [        R
                  " S5      5      nSU-   S-   U-   nS	U[        S
U-   5      S	SS0S.nXEU4$ )Nzutf-8r   s   =3Dr   s   =2C    s   n=s   ,r=r   s   n,,skipEmptyExchangeT)	saslStartrA   payloadautoAuthorizeoptions)rC   encodereplacer   osurandomr
   )credentialsrA   rC   rt   nonce
first_barecmds          r    _authenticate_scram_startr      s     ##H??7#++D&9AA$ODrzz"~.E&.J &:-.'.C c!!r#   )rV   
str | boolr3   r   )rs   strrB   Optional[str]rt   r   ru   r   rv   zMapping[str, Any]rw   r   r3   r@   )r   r   r   r   r3   r   )r   r   r3   zDict[bytes, bytes])r   r@   rA   r   r3   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   r@   rG   rM   rX   r   r   r   r   r?   r#   r    <module>r      s    = " 	  % " / /   .	
 : . T ? c  6 ,/B.CD :{T
{T{T {T 	{T
 {T {T {T|@
" "-0"9"r#   