
    =OOf                     p    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m	Z	m
Z
 dZdZd Zd	 Zd
 Zd Zd Zd Zy)
    )hexlifyN   )SEQUENCE_TYPES)abort_sasl_negotiationsend_sasl_negotiationrandom_hex_string   c                     t        | t              s| j                         } t        j                  |       j                         S N)
isinstancebytesencodehashlibmd5digestvalues    ^/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/ldap3/protocol/sasl/digestMd5.pymd5_hr   &   s/    eU#;;u$$&&    c                     t        | t              s| j                         } t        |t              s|j                         }t        | dz   |z         S )N   :)r   r   r   r   kss     r   md5_kdr   -   s?    aHHJaHHJTAr   c                 X    t        | t              s| j                         } t        |       S r   )r   r   r   r   r   s    r   md5_hexr   7   s!    eU#5>r   c                     t        | t              s| j                         } t        |t              s|j                         }t        j                  | |t
        j                        j                         S )N)	digestmod)r   r   r   hmacnewr   r   	hexdigestr   s     r   md5_hmacr%   >   sL    aHHJaHHJ88AqGKK0::<<r   c                 X   t        | j                  t              rt        | j                        dvry t	        | |d       }d|v r|d   t        |d         }ny d|vsd|vsd|vrt        | |       y d|v r|d   j                         dk(  r|d   nd}| j                  d	   j                  |      }| j                  d
   r| j                  d
   n
d|v r|d   ndj                  |      }| j                  d   j                  |      }| j                  d   r| j                  d   j                  |      nd}|d   j                  |      }	t        d      j                  |      }
d| j                  j                  j                  |      z   }d}t        | j                        dk(  r1| j                  d   dk(  r| j                  j                  s	d}d
| _        d|z   dz   }|d|z   dz   z  }||rd|z   dz   ndz  }|d|	z   dz   z  }|d|
z   dz   z  }|d|z   dz   z  }|d|z   dz   z  }|dz  }|dk(  r|d z  }t        d!j                  |||g            }|rd!j                  ||	|
|g      nd!j                  ||	|
g      }d"|z   |d#v rd$ndz   }|dk(  r8t        t        |      d%z         | _        t        t        |      d&z         | _        |d't%        t'        t%        t        |            d!j                  |	d(|
|t%        t        |            g                  z   d)z   z  }t	        | ||      }|S )*N)      	saslCredsrealmnonce	algorithmcharsetutf-8z	iso8859-1r
   r       r   r      s   ldap/s   authr(   r'   sign   auth-ints
   username="s   ",s   realm="s	   authzid="s   nonce="s   cnonce="s   digest-uri="s   qop=   ,s   nc=00000001,s   charset="utf-8",r   s   AUTHENTICATE:)r3   s	   auth-confs!   :00000000000000000000000000000000sA   Digest session key to server-to-client signing key magic constantsA   Digest session key to client-to-server signing key magic constants
   response="s   00000001   ")r   sasl_credentialsr   lenr   decode_directivesr   lowerr   r	   serverhostssl_digest_md5_sec_numr   join_digest_md5_kis_digest_md5_kicr   r   )
connectioncontrolsresultserver_directivesr-   userr*   passwordauthz_idr+   cnonceuriqopdigest_responsea0a1a2s                    r   sasl_digest_md5rO   H   s    j11>B#jNiNiJjntJt #:x>Ff!4!@-f[.AB''7:K+K{bsOsz84 /8;L.LQbclQmQsQsQu  zA  RA	*  GRG&&q)009D/9/J/J1/MZ((+ry  ~O  sOTefmTn  UW  `  `  ah  iE**1-44W=HAKA\A\]^A_z**1-44W=ehHg&--g6Er"))'2F
Z&&++227;
;C
C
:&&'1,1L1LQ1OSY1Yblbsbsbwbw)*
&#d*U2OzE)E11OHx/%7#MOzE)E11O{V+e33O,u44Ow}t++O,,O'..	tyy$x01	2B5=Bvx0	1499bRWY_M`CaB	C	3RmKm#Gsv	wB
k%*597{+{%|
"%*597{+{%|
"}wvgeBi6H$))UZ\gioqtv}  D  EG  H  wI  UJ  KK  0L  (M  M  PT  T  TO":xIFMr   c                 <   t         }d}d}d}t               }| j                  d      D ]h  }|t         k(  r|dk(  r|}d}t        }|t        k(  r|dk(  r|s|sd}1|t        k(  r
|dk(  r|rd}D|t        k(  r|dk(  r|s|||<   d}d}t         }d||z  }j |r|r|||<   |S )z5
    converts directives to dict, unquote values
    r/   Fr.   ="T,)	STATE_KEYdictdecodeSTATE_VALUE)directives_stringstate
tmp_bufferquotingkey
directivescs          r   r8   r8      s     EJG
CJ%%g. I!s(CJEk!a3hwzGk!a3h7Gk!a3hw(JsOJCE!OJ" z$
3r   )__doc__binasciir   r   r"   r/   r   protocol.sasl.saslr   r   r	   rT   rW   r   r   r   r%   rO   r8    r   r   <module>rc      sI   2     b b 	'=5pr   