o
    �õ±jÔ  ã                
   @   sj   d dl Z d dlZd dlmZmZ G dd„ dejƒZddddd	d
ddddœ	ZG dd„ dƒZG dd„ dƒZ	dS )é    N)ÚEncKrbPrivPartÚKRB_PRIVc                   @   s$   e Zd ZdZdZdZdZdZdZdS )ÚKRB5PasswordPolicyFlagsé   é   é   é   é   é    N)	Ú__name__Ú
__module__Ú__qualname__ÚComplexÚNoAnonChangeÚNoClearChangeÚLockoutAdminsÚStoreCleartextÚRefusePasswordChange© r   r   ú�/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minikerberos/protocol/rfc3244.pyr      s    r   ÚOkzBad requestzServer errorzClient not foundÚRejectedzAccess deniedzProtocol version mismatchzProtocol errorúUnknown error)	r   r   r   é   r   é   é   é   iÿÿ  c                   @   s\   e Zd Zddededefdd„Zdd„ Zed	d
„ ƒZedej	fdd„ƒZ
dd„ Zdd„ ZdS )ÚKRB5ChangePasswordNÚapÚprivÚerrc                 C   s   || _ || _|| _d| _d S )Ns   ÿ€)r   r   r    Úversion)Úselfr   r   r    r   r   r   Ú__init__   s   
zKRB5ChangePassword.__init__c                 C   s`   dt | jƒ t | jƒ }|jdddd�}|| j7 }|t | jƒjdddd�7 }|| j| j 7 }|S )Nr   r   ÚbigF©Ú	byteorderÚsigned)Úlenr   r   Úto_bytesr!   )r"   Úmessage_lengthÚmessager   r   r   r)   "   s   
zKRB5ChangePassword.to_bytesc                 C   s   t  t | ¡¡S ©N)r   Úfrom_bufferÚioÚBytesIO)Údatar   r   r   Ú
from_bytes*   s   zKRB5ChangePassword.from_bytesÚbuffc                 C   s\   t j|  d¡ddd�}|  d¡}t j|  d¡ddd�}|  |¡}|  || d ¡}t||ƒS )Nr   r$   Fr%   r   )Úintr1   Úreadr   )r2   r*   r!   Úap_lenr   r   r   r   r   r-   .   s   


zKRB5ChangePassword.from_bufferc                 C   s4   t  | j¡j}| |d|d d ¡}t |¡j}|S )Né   zenc-partÚcipher)r   Úloadr   ÚnativeÚdecryptr   )r"   Úsubkey_cipherÚsubkeyÚprivrepÚprivdataÚprivdecr   r   r   Údecrypt_priv7   s   zKRB5ChangePassword.decrypt_privc                 C   s   |   ||¡}t |d ¡S )Nz	user-data)r@   ÚKRB5CHPWReplyr1   )r"   r;   r<   Úprivresponser   r   r   Úparse_reply=   s   zKRB5ChangePassword.parse_replyr,   )r   r   r   Úbytesr#   r)   Ústaticmethodr1   r.   r/   r-   r@   rC   r   r   r   r   r      s    
r   c                   @   s(   e Zd Zdd„ Zedd„ ƒZdd„ ZdS )rA   c                 C   s.   d | _ d | _d | _d | _d | _d | _d | _d S r,   )Úresult_codeÚresult_messageÚpw_min_lengthÚ
pw_historyÚ
pw_max_ageÚ
pw_min_ageÚpw_flags)r"   r   r   r   r#   D   s   
zKRB5CHPWReply.__init__c                 C   sî   d}t ƒ }ztj| d d… ddd�|_W n   tj| d d… ddd�|_Y t| ƒdkr.|S tj| dd… ddd�|_tj| dd… ddd�|_tj| d	d
… ddd�| |_tj| d
d… ddd�| |_t	tj| dd	… ddd�ƒ|_
|S )Nl    @ÓT$r   r$   Fr%   r   r   é   r	   é   r
   )rA   r3   r1   rF   r(   rH   rI   rJ   rK   r   rL   )r0   ÚticksÚresr   r   r   r1   O   s   zKRB5CHPWReply.from_bytesc                 C   sx   d}|d| j t | j d¡f 7 }|d| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|d| j 7 }|d	| j 7 }|S )
Nz=== KRB5CHPWReply ===
zResult code: %s %s 
r   zResult message: %s
zPassword minimum length: %s
zPassword history: %s
zPassword maximum age: %s
zPassword minimum age: %s
zPassword flags: %s
)	rF   ÚKRB5CHPWResultCodeÚgetrG   rH   rI   rJ   rK   rL   )r"   Útr   r   r   Ú__str__b   s   zKRB5CHPWReply.__str__N)r   r   r   r#   rE   r1   rT   r   r   r   r   rA   C   s
    
rA   )
r.   ÚenumÚ"minikerberos.protocol.asn1_structsr   r   ÚIntFlagr   rQ   r   rA   r   r   r   r   Ú<module>   s    	÷(