o
    `jD                  	   @   s`   d dl Z zd dlZd dlmZ W n eefy   dZdZY nw ddlmZ G dd deZdS )    N)GSSError   )SaslMechanismc                   @   sH   e Zd ZdZdZdZdd Zdd Zdd	 Zd
d Z	dd Z
dd ZdS )SaslMechanismGSSAPIr         c                 K   s   t d u rtdd|vrd|vrtdd| _d| _d | _|dd d ur:t|d | _t	|d t j
r9|d | _n|ddpE|dd}|d d	 | | _| jd u rdt j
| jt jjd
t jj| _t j| jdd| _| jd | _d S )NzGSSAPI lib not found!sasl_kerberos_namesasl_kerberos_service_namezWsasl_kerberos_service_name or sasl_kerberos_name required for GSSAPI sasl configurationFsasl_kerberos_domain_name host@)	name_typeinitiate)nameusage)gssapiRuntimeError
ValueError_is_done_is_authenticatedgssapi_namegetstrauth_id
isinstanceNameNameTypehostbased_servicecanonicalizeMechTypekerberosSecurityContext_client_ctxstep_next_token)selfconfigkerberos_domain_name r)   S/home/djax/ivt_ai_plugin/venv/lib/python3.10/site-packages/kafka/net/sasl/gssapi.py__init__   s$   

 zSaslMechanismGSSAPI.__init__c                 C   s   | j rd| _| jp
dS )NT    )r   r   r%   r&   r)   r)   r*   
auth_bytes+   s   
zSaslMechanismGSSAPI.auth_bytesc                 C   s   | j js| j || _d S | jr|dkrtdd S | j |j}| j}t	
d|dd d }t	
d||@ |dd  | jdg}| j d|dj| _d| _d S )	Nr,   z:Unexpected receive auth_bytes after sasl/gssapi completionz>br   r   zutf-8FT)r#   completer$   r%   r   r   unwrapmessageSASL_QOP_AUTHstructStructunpackpackr   encodewrapjoinr   )r&   r.   msgclient_flagsserver_flagsmessage_partsr)   r)   r*   receive4   s   


zSaslMechanismGSSAPI.receivec                 C      | j S N)r   r-   r)   r)   r*   is_doneV      zSaslMechanismGSSAPI.is_donec                 C   r?   r@   )r   r-   r)   r)   r*   is_authenticatedY   rB   z$SaslMechanismGSSAPI.is_authenticatedc                 C   s"   | j stdd| jj| jjf S )NzNot authenticated yet!z+Authenticated as %s to %s via SASL / GSSAPI)rC   r   r#   initiator_nametarget_namer-   r)   r)   r*   auth_details\   s   z SaslMechanismGSSAPI.auth_detailsN)__name__
__module____qualname__r2   SASL_QOP_AUTH_INTSASL_QOP_AUTH_CONFr+   r.   r>   rA   rC   rF   r)   r)   r)   r*   r      s    	"r   )	r3   r   gssapi.raw.miscr   ImportErrorOSErrorabcr   r   r)   r)   r)   r*   <module>   s    