
    &g^C                    d   % S r SSKJr  SSKrSSKrSSKrSSKrSSKJrJ	r	  SSK
JrJrJrJrJrJrJrJr  SSKJr  SSKJr  SSKJr  SS	KJrJr  SS
KJr  SSKJrJ r J!r!J"r"  SSK#J$r$J%r%  SSK&J'r'  \(       a  SSK(J)r)  SSK*J+r+  Sr,Sr- SSK.r/\0" \1" \2\/Rf                  Ri                  S5      SS 5      5      S:  a  Sr-Sr6        S/S jr7S0S jr8S1S jr9S2S jr:S3S jr;S3S jr<S3S jr=S3S jr>\;\=\\\<\R~                  " \7SS9\R~                  " \7SS9\>S .r@S!\AS"'    " S# S$5      rB " S% S&\B5      rC " S' S(\B5      rD " S) S*\B5      rE\D\R~                  " \CSS9\R~                  " \CSS9\E\R~                  " \CSS9S+.rFS,\AS-'    S4       S5S. jjrGg! \5 a     SSK/r/ N! \5 a    Sr,  Nf = ff = f)6zAuthentication helpers.    )annotationsN)standard_b64decodestandard_b64encode)TYPE_CHECKINGAnyCallable	CoroutineMappingMutableMappingOptionalcast)quote)Binary)_authenticate_aws)_authenticate_oidc_get_authenticator)_getaddrinfo)MongoCredential_authenticate_scram_start_parse_scram_response_xor)ConfigurationErrorOperationFailure)saslprep)AsyncConnection)HelloTF.   )r      c                  #    U R                   nUS:X  a7  Sn[        R                  n[        U R                  5      R                  S5      nO6Sn[        R                  n[        X0R                  5      R                  S5      nU R                  nU R                  n[        R                  n	UR                  n
U
(       aV  U
R                  5       (       aA  [        U
[        5      (       d   eU
R                   c   eU
R                   u  pU
R"                  nO'[%        X5      u  pnUR'                  X~5      I Sh  vN nUc   eUS   n[)        U5      n[+        US   5      nUS:  a  [-        S	5      eUS
   nUS   nUR/                  U5      (       d  [-        S5      eSU-   nUR0                  (       a  UR0                  u  nnnnOSu  nnnnU(       a  UU:w  d  UU:w  a\  [        R2                  " XF[5        U5      U5      nU	" USU5      R7                  5       nU	" USU5      R7                  5       nUUUU4Ul        U" U5      R7                  5       nSR9                  XU45      nU	" UUU5      R7                  5       nS[;        [=        UU5      5      -   nSR9                  UU45      n[;        U	" UUU5      R7                  5       5      nSUS   [?        U5      S.nUR'                  X~5      I Sh  vN n[)        US   5      n[        R@                  " US   U5      (       d  [-        S5      eUS   (       dA  SUS   [?        S5      S.nUR'                  X~5      I Sh  vN nUS   (       d  [-        S5      egg GN> N N 7f)zAuthenticate using SCRAM.SCRAM-SHA-256sha256utf-8sha1Npayload   ii   z+Server returned an invalid iteration count.   s   rz!Server returned an invalid nonce.s	   c=biws,r=)NNNNs
   Client Keys
   Server Key   ,s   p=   conversationIdsaslContinuer+   r%      vz%Server returned an invalid signature.done    z%SASL conversation failed to complete.)!usernamehashlibr"   r   passwordencoder$   _password_digestsourcecachehmacHMACauth_ctxspeculate_succeeded
isinstance_ScramContext
scram_dataspeculative_authenticater   commandr   intr   
startswithdatapbkdf2_hmacr   digestjoinr   r   r   compare_digest) credentialsconn	mechanismr1   rE   	digestmodrC   r6   r7   _hmacctxnonce
first_barerescmdserver_firstparsed
iterationssaltrnoncewithout_proof
client_key
server_keycsaltciterationssalted_pass
stored_keyauth_msg
client_sigclient_proofclient_final
server_sigs                                    ^C:\Suresh\moveshuttle\MDcreated\moveengine\venv\Lib\site-packages\pymongo/asynchronous/auth.py_authenticate_scramrd   H   sS     ##HO#NN	,,-44W=LL	*>*>?FFwOFE IIE
--C
s&&((#}----~~)))NN**!:;!R3LL--??y>L"<0FVD\"JDLMM$<DD\FU##BCC 6)Mzz5:ZZ2
J{5K2
J{ **C))&8J48PR\];yAHHJ
;yAHHJ
 *dJ?
:&--/Jyy*MBCHz8Y7>>@J-d:z.JKKL99m\:;L#E*h	$J$Q$Q$STJ ./,'C
 V)
)C"3y>2Fvd|Z88FGG v;!"23c{

 LL--6{"#JKK  _ .N * .s8   D3M:5M36F4M:*M6+A,M:M8M:6M:8M:c                f   [        U[        5      (       d  [        S5      e[        U5      S:X  a  [	        S5      e[        U [        5      (       d  [        S[        U 5       35      e[        R                  " 5       nU  SU 3nUR                  UR                  S5      5        UR                  5       $ )z0Get a password digest to use for authentication.z#password must be an instance of strr   zpassword can't be emptyz)username must be an instance of str, not z:mongo:r#   )r<   str	TypeErrorlen
ValueErrortyper2   md5updater4   	hexdigest)r1   r3   md5hashrC   s       rc   r5   r5      s    h$$=>>
8}233h$$CDNCSTUUkkmGZwxj)DNN4;;w'(r0   c                    [        X5      n[        R                  " 5       nU  U U 3nUR                  UR	                  S5      5        UR                  5       $ )z*Get an auth key to use for authentication.r#   )r5   r2   rk   rl   r4   rm   )rN   r1   r3   rE   rn   rC   s         rc   	_auth_keyrp      sM    h1FkkmGWXJvh'DNN4;;w'(r0   c           	       #    US;   a  U $ [        U SSS[        R                  [        R                  S9I Sh  vN S   u  p#pEnUS:X  a  UR	                  5       $  [        R
                  " U[        R                  5      nUS   R	                  5       $  NZ! [        R                   a    UR	                  5       s $ f = f7f)z2Canonicalize hostname following MIT-krb5 behavior.)FnoneNr   )familyrj   protoflagsforward)r   socketIPPROTO_TCPAI_CANONNAMElowergetnameinfoNI_NAMEREQDgaierror)hostnameoptionafsocktypert   	canonnamesockaddrnames           rc   _canonicalize_hostnamer      s        $$%%
 	
 	0	,B%H   !!!(F,>,>? 7==?'	
  ?? !  !s3   6B?B!B?%B  B?$B<9B?;B<<B?c                \  #    [         (       d  [        S5      e U R                  nU R                  nU R                  nUR
                  =(       d    UR                  S   n[        XTR                  5      I Sh  vN nUR                  S-   U-   nUR                  b  US-   UR                  -   nUb  [        (       aK  SR                  [        U5      [        U5      45      n[        R                  " Xg[        R                   S9u  pOlSU;   a  UR#                  SS5      u  pOUSp[        R                  " U[        R                   U
UUS9u  pO%[        R                  " U[        R                   S9u  pU[        R$                  :w  a  ['        S	5      e [        R(                  " U	S
5      S:w  a  ['        S5      e[        R*                  " U	5      nSSUSS.nUR-                  SU5      I Sh  vN n[/        S5       H  n[        R(                  " U	[1        US   5      5      nUS:X  a  ['        S5      e[        R*                  " U	5      =(       d    S
nSUS   US.nUR-                  SU5      I Sh  vN nU[        R$                  :X  d  M    O   ['        S5      e[        R2                  " U	[1        US   5      5      S:w  a  ['        S5      e[        R4                  " U	[        R*                  " U	5      U5      S:w  a  ['        S5      e[        R*                  " U	5      nSUS   US.nUR-                  SU5      I Sh  vN   [        R6                  " U	5        g GN GNn N N#! [        R6                  " U	5        f = f! [        R8                   a  n['        [1        U5      5      SeSnAff = f7f)zAuthenticate using GSSAPI.zEThe "kerberos" module must be installed to use GSSAPI authentication.r   N@:)gssflagsr*   )r   userdomainr3   z&Kerberos context failed to initialize. z*Unknown kerberos failure in step function.GSSAPI	saslStartrJ   r%   autoAuthorize	$external
   r%   r+   r,   z+Kerberos authentication failed to complete.z0Unknown kerberos failure during GSS_Unwrap step.z.Unknown kerberos failure during GSS_Wrap step.)HAVE_KERBEROSr   r1   r3   mechanism_propertiesservice_hostaddressr   canonicalize_host_nameservice_nameservice_realm_USE_PRINCIPALrF   r   kerberosauthGSSClientInitGSS_C_MUTUAL_FLAGsplitAUTH_GSS_COMPLETEr   authGSSClientStepauthGSSClientResponser@   rangerf   authGSSClientUnwrapauthGSSClientWrapauthGSSClientCleanKrbError)rH   rI   r1   r3   propshostservice	principalresultrM   r   r   r%   rQ   response_excs                    rc   _authenticate_gssapir      sg    = S
 	
d3''''00 !!4T\\!_+D2N2NOO$$s*T1*me&9&99G~  HHeHouX%GH	&881K1K (?#+>>#q#9LD&#+T&&88%77!% #44WxGaGabKFX///"#KLL:	-
 ))#r2a7&'STT 44S9G%"!"	C "\\+s;;H 2Y!33CXi=P9QRR<*+WXX"88=C %&&./?&@&
 "&k3!??X777 " ''TUU ++CXi5H1IJaO&'YZZ))#x/M/Mc/RT\]abb&'WXX44S9G !"*+;"<"C
 ,,{C000 '',u Pf < @* 1 '', 3s3x(d23s   N,AM; 8M9DM; AM  +M,BM  /M0M  
B0M  :M;M  ?M; N,M; M  M  M   M88M; ;N)N$$N))N,c                   #    U R                   nU R                  nU R                  nSU SU 3R                  5       nSS[	        U5      SS.nUR                  X&5      I Sh  vN   g N7f)z(Authenticate using SASL PLAIN (RFC 4616) r*   PLAINr   N)r6   r1   r3   r4   r   r@   )rH   rI   r6   r1   r3   r%   rQ   s          rc   _authenticate_plainr   @  sl     F##H##HhZtH:.668G'?	C ,,v
###s   AA)!A'"A)c                   #    UR                   nU(       a  UR                  5       (       a  g[        XR                  5      R	                  5       nUR                  SU5      I Sh  vN   g N7f)z Authenticate using MONGODB-X509.Nr   )r:   r;   _X509Contextr   speculate_commandr@   )rH   rI   rM   rQ   s       rc   _authenticate_x509r   O  sM     
--C
s&&((
{LL
1
C
C
EC
,,{C
(((s   A"A,$A*%A,c                  #    UR                   S:  a  UR                  (       a  UR                  nOYU R                  nUR                  5       nUS-   U R                  -   US'   UR                  X4SS9I S h  vN R                  S/ 5      nSU;   a  [        XS5      I S h  vN $ [        XS5      I S h  vN $ [        XS5      I S h  vN $  NV N. N N
7f)N   r   saslSupportedMechsF)publish_eventsr!   SCRAM-SHA-1)max_wire_versionnegotiated_mechsr6   	hello_cmdr1   r@   getrd   )rH   rI   mechsr6   rQ   s        rc   _authenticate_defaultr   Z  s     !  ))E ''F.."C(.{7K7K(KC$%<<E<JJOO$bE e#,[PPP,[NNN(MJJJ K QNJsH   A3C5C6)CC C3C4CCCCCCr   )rJ   r!   )r   MONGODB-X509zMONGODB-AWSMONGODB-OIDCr   r   r!   DEFAULTz6Mapping[str, Callable[..., Coroutine[Any, Any, None]]]	_AUTH_MAPc                  \    \ rS rSrS	S jr\      S
S j5       rSS jrSS jrSS jr	Sr
g)_AuthContextiy  c                *    Xl         S U l        X l        g N)rH   r?   r   )selfrH   r   s      rc   __init___AuthContext.__init__z  s    &EI%r0   c                |    [         R                  U R                  5      nU(       a  [        [        U" X5      5      $ g r   )_SPECULATIVE_AUTH_MAPr   rJ   r   r   )credsr   spec_clss      rc   from_credentials_AuthContext.from_credentials  s0     ),,U__=hu&>??r0   c                    [         er   )NotImplementedErrorr   s    rc   r   _AuthContext.speculate_command  s    !!r0   c                &    UR                   U l         g r   )r?   )r   hellos     rc   parse_response_AuthContext.parse_response  s    (-(F(F%r0   c                ,    [        U R                  5      $ r   )boolr?   r   s    rc   r;    _AuthContext.speculate_succeeded  s    D1122r0   )r   rH   r?   N)rH   r   r   tuple[str, int]returnNone)r   r   r   r   r   zOptional[_AuthContext]r   z"Optional[MutableMapping[str, Any]])r   zHello[Mapping[str, Any]]r   r   )r   r   )__name__
__module____qualname____firstlineno__r   staticmethodr   r   r   r;   __static_attributes__ r0   rc   r   r   y  sC    
 )8	 "G3r0   r   c                  F   ^  \ rS rSr        SU 4S jjrSS jrSrU =r$ )r=   i  c                >   > [         TU ]  X5        S U l        X0l        g r   )superr   r>   rJ   )r   rH   r   rJ   	__class__s       rc   r   _ScramContext.__init__  s     	.9="r0   c                    [        U R                  U R                  5      u  pnU R                  R                  US'   X4U l        U$ Ndb)r   rH   rJ   r6   r>   )r   rN   rO   rQ   s       rc   r   _ScramContext.speculate_command  sA    !:4;K;KT^^!\3$$++D	 -
r0   )rJ   r>   )rH   r   r   r   rJ   rf   r   r   r   )r   r   r   r   r   r   r   __classcell__)r   s   @rc   r=   r=     s2    #*#5D#QT#	# r0   r=   c                      \ rS rSrSS jrSrg)r   i  c                p    SSS.nU R                   R                  b  U R                   R                  US'   U$ )Nr*   r   )authenticaterJ   r   )rH   r1   )r   rQ   s     rc   r   _X509Context.speculate_command  s8     ~>$$0**33CK
r0   r   N)r   zMutableMapping[str, Any]r   r   r   r   r   r   r   r0   rc   r   r     s    r0   r   c                      \ rS rSrSS jrSrg)_OIDCContexti  c                    [        U R                  U R                  5      nUR                  5       nUc  g U R                  R                  US'   U$ r   )r   rH   r   get_spec_auth_cmdr6   )r   authenticatorrQ   s      rc   r   _OIDCContext.speculate_command  sH    *4+;+;T\\J--/;$$++D	
r0   r   Nr   r   r   r0   rc   r   r     s    r0   r   )r   r   r!   r   r   zMapping[str, Any]r   c                   #    U R                   n[        U   nUS:X  a  [        XU5      I Sh  vN   gU" X5      I Sh  vN   g N N7f)zAuthenticate connection.r   N)rJ   r   r   )rH   rI   reauthenticaterJ   	auth_funcs        rc   r   r     sK      %%I)$IN" NCCC*** 	D*s   +AAAAAA)rH   r   rI   r   rJ   rf   r   r   )r1   rf   r3   rf   r   rf   )rN   rf   r1   rf   r3   rf   r   rf   )r~   rf   r   z
str | boolr   rf   )rH   r   rI   r   r   r   )F)rH   r   rI   r   r  r   r   r   )H__doc__
__future__r   	functoolsr2   r8   rw   base64r   r   typingr   r   r   r	   r
   r   r   r   urllib.parser   bson.binaryr   pymongo.asynchronous.auth_awsr   pymongo.asynchronous.auth_oidcr   r   pymongo.asynchronous.helpersr   pymongo.auth_sharedr   r   r   r   pymongo.errorsr   r   pymongo.saslprepr   pymongo.asynchronous.poolr   pymongo.hellor   r   r   winkerberosr   tuplemaprA   __version__r   ImportError_IS_SYNCrd   r5   rp   r   r   r   r   r   partialr   __annotations__r   r=   r   r   r   r   r   r0   rc   <module>r     s    "     9	 	 	   ; 6  @ %9#	"Sh**005bq9:;vE RL RL(7RLDGRL	RLj:k3\$)K( #&$& $$%8MR&&':oV$	E	A 	3 32L "< <  !$$]mL&&}P   /J, (  QV	+ 	+(7	+IM	+		+A   s*   5F F/FF+'F/*F++F/