o
    jz                     @   s   d 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 ddlmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZm Z  ddl!m"Z"m#Z# 			
	
	
	dddZ$dd Z%					
	
dddZ&dd Z'dd Z(dd Z)dd Z*d
S )
   )SIMPLE	ANONYMOUSSASLSTRING_TYPES)RESULT_CODES)LDAPUserNameIsMandatoryErrorLDAPPasswordIsMandatoryError$LDAPUnknownAuthenticationMethodErrorLDAPUserNameNotAllowedError)validate_simple_password)VersionAuthenticationChoiceSimpleBindRequest
ResultCodeSaslCredentialsBindResponseLDAPDN
LDAPStringReferralServerSaslCredsSicilyPackageDiscoverySicilyNegotiateSicilyResponse)authentication_choice_to_dictreferrals_to_list)
to_unicodeto_raw NFc           
      C   s  t  }t| |d< |d u rd}t|tr|rt|n||d< |tkr=|s(td|r9t dt	t
||d< |S td|tkr[t }||d< |d urP||d	< t d
||d< |S |tkrv|retdd|d< t dt	d|d< |S |dkrd|d< t dtd|d< |S |dkrd|d< t dt| |d< |S |dkr|| | }	|	rd|d< t dt|	|d< |S d }|S td)Nversionr   namez%user name is mandatory in simple bindsimpleauthenticationz$password is mandatory in simple bind	mechanismcredentialssaslz'user name not allowed in anonymous bindSICILY_PACKAGE_DISCOVERYsicilyPackageDiscoverySICILY_NEGOTIATE_NTLMNTLMsicilyNegotiateSICILY_RESPONSE_NTLMsicilyResponsezunknown authentication method)r   r   
isinstancer   r   r   r   r   setComponentByNamer   r   r	   r   r   r   r   r   r   create_negotiate_messageparse_challenge_messagecreate_authenticate_messager   r
   )
r    r#   r!   passwordsasl_mechanismsasl_credentialsauto_encoderequest
sasl_credsserver_creds r:   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/ldap3/operation/bind.pybind_operation$   sX   
!
r<   c                 C   s$   t | d t| d t| d dS )Nr    r!   r#   )r    r!   r#   )intstrr   )r7   r:   r:   r;   bind_request_to_dict]   s   


r?   c                 C   sN   t  }t| |d< t||d< t||d< |rt||d< |r%t||d< |S )N
resultCode	matchedDNdiagnosticMessagereferralserverSaslCreds)r   r   r   r   r   r   )result_code
matched_dndiagnostic_messagerC   server_sasl_credentialsresponser:   r:   r;   bind_response_operationc   s   rJ   c                 C   s   t | d t  | d t| d t| d | d d ur*| d  r*t| d ng | d d ur?| d  r?t| d dS d dS )Nr@   rA   rB   rC   rD   )resultdescriptiondnmessage	referrals	saslCreds)r=   r   getNamedValuesgetNamer>   hasValuer   bytesrI   r:   r:   r;   bind_response_to_dictx   s   


&"rV   c                 C   s6   t | d t  | d t| d t| d dS )Nr@   rA   rB   )rK   rL   r9   error_message)r=   r   rQ   rR   rT   r>   rU   r:   r:   r;   sicily_bind_response_to_dict   s
   


rX   c                 C   s   t  }t| d d |d< t|d  |d< t| d d dd|d< t| d	 d dd|d
< d |d< d |d< | dd  D ]}|d	 dkrLt|d |d< q;t|d |d< q;|S )N       rK   rL      Tfrom_serverrM   r   rN   rO   rP   )dictr=   r   r   r   rT   )rI   response_dictrr:   r:   r;   bind_response_to_dict_fast   s   ra   c                 C   sZ   t  }t| d d |d< t|d  |d< t| d d |d< t| d d dd	|d
< |S )NrY   rZ   rK   rL   r[   r9   r   Tr\   rW   )r^   r=   r   rT   r   )rI   r_   r:   r:   r;   !sicily_bind_response_to_dict_fast   s   rb   )r   NNNF)r   r   NN)+__doc__r   r   r   r   r   core.resultsr   core.exceptionsr   r	   r
   r   protocol.sasl.saslr   protocol.rfc4511r   r   r   r   r   r   r   r   r   r   r   r   r   r   protocol.convertr   r   
utils.convr   r   r<   r?   rJ   rV   rX   ra   rb   r:   r:   r:   r;   <module>   s0    @
9
	