o
    Õl>j!  ã                   @   sB   d Z ddlmZ ddlmZmZ G dd„ deƒZG dd„ dƒZdS )	zSRP password handling.é    )ÚEnum)Úpbkdf2_hmacÚsha256c                   @   s   e Zd ZdZdZdZdS )ÚSrpProtocolTypezSRP password types.Ús2kÚs2k_foN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚS2KÚS2K_FO© r   r   úJ/home/thesage/.local/lib/python3.10/site-packages/pyicloud/srp_password.pyr      s    r   c                
   @   sN   e Zd ZdZdeddfdd„Zdeded	ed
eddf
dd„Z	defdd„Z
dS )ÚSrpPasswordzSRP password.ÚpasswordÚreturnNc                 C   s0   t | d¡ƒ ¡ | _d | _d | _d | _d | _d S )Nzutf-8)r   ÚencodeÚdigestÚ_password_hashÚsaltÚ
iterationsÚ
key_lengthÚprotocol)Úselfr   r   r   r   Ú__init__   s
   
zSrpPassword.__init__r   r   r   r   c                 C   s   || _ || _|| _|| _dS )zSet encrypt info.N)r   r   r   r   )r   r   r   r   r   r   r   r   Úset_encrypt_info   s   
zSrpPassword.set_encrypt_infoc                 C   s~   | j du s| jdu s| jdu rtdƒ‚d}| jtjkr#| j ¡  	¡ }n	| jtj
kr,| j}|du r4tdƒ‚td|| j | j| jƒS )zEncode password.NzEncrypt info not setzUnsupported SrpPassword typer   )r   r   r   Ú
ValueErrorr   r   r   r   Úhexr   r   r   )r   Úpassword_digestr   r   r   r   !   s    ûzSrpPassword.encode)r   r	   r
   r   Ústrr   ÚbytesÚintr   r   r   r   r   r   r   r      s    ÿÿÿÿ
þ	r   N)r   Úenumr   Úhashlibr   r   r   r   r   r   r   r   Ú<module>   s
    