o
    àý°jX  ã                   @  sÄ   d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ G d	d
„ d
ejƒZG dd„ dejd�ZG dd„ deƒZG dd„ deƒZG dd„ dƒZG dd„ deƒZdS )é    )ÚannotationsN)Úutils)ÚEncoding)ÚParameterFormat)ÚPrivateFormat)ÚPublicFormat)ÚHashAlgorithmc                   @  s   e Zd ZdZdZdS )ÚPBESz%PBESv1 using SHA1 and 3-Key TripleDESz)PBESv2 using SHA256 PBKDF2 and AES256 CBCN)Ú__name__Ú
__module__Ú__qualname__ÚPBESv1SHA1And3KeyTripleDESCBCÚPBESv2SHA256AndAES256CBC© r   r   ú /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/cryptography/hazmat/primitives/_serialization.pyr	      s    r	   c                   @  ó   e Zd ZdS )ÚKeySerializationEncryptionN©r
   r   r   r   r   r   r   r      ó    r   )Ú	metaclassc                   @  s   e Zd Zddd„ZdS )ÚBestAvailableEncryptionÚpasswordÚbytesc                 C  s(   t |tƒrt|ƒdkrtdƒ‚|| _d S )Nr   ú!Password must be 1 or more bytes.)Ú
isinstancer   ÚlenÚ
ValueErrorr   ©Úselfr   r   r   r   Ú__init__    s   
z BestAvailableEncryption.__init__N)r   r   ©r
   r   r   r   r   r   r   r   r      ó    r   c                   @  r   )ÚNoEncryptionNr   r   r   r   r   r"   '   r   r"   c                   @  sH   e Zd Zddddœddd„Zd dd„Zd!dd„Zd"dd„Zd#dd„ZdS )$Ú!KeySerializationEncryptionBuilderN©Ú_kdf_roundsÚ
_hmac_hashÚ_key_cert_algorithmÚformatr   r%   ú
int | Noner&   úHashAlgorithm | Noner'   úPBES | NoneÚreturnÚNonec                C  s   || _ || _|| _|| _d S ©N)Ú_formatr%   r&   r'   )r   r(   r%   r&   r'   r   r   r   r   ,   s   
z*KeySerializationEncryptionBuilder.__init__ÚroundsÚintc                 C  sJ   | j d ur	tdƒ‚t|tƒstdƒ‚|dk rtdƒ‚t| j|| j| jd�S )Nzkdf_rounds already setzkdf_rounds must be an integeré   z%kdf_rounds must be a positive integerr$   )	r%   r   r   r1   Ú	TypeErrorr#   r/   r&   r'   )r   r0   r   r   r   Ú
kdf_rounds:   s   

üz,KeySerializationEncryptionBuilder.kdf_roundsÚ	algorithmr   c                 C  s<   | j tjur
tdƒ‚| jd urtdƒ‚t| j | j|| jd�S )Nz2hmac_hash only supported with PrivateFormat.PKCS12zhmac_hash already setr$   )	r/   r   ÚPKCS12r3   r&   r   r#   r%   r'   ©r   r5   r   r   r   Ú	hmac_hashK   s   ÿ
üz+KeySerializationEncryptionBuilder.hmac_hashr	   c                 C  s<   | j tjur
tdƒ‚| jd urtdƒ‚t| j | j| j|d�S )Nz;key_cert_algorithm only supported with PrivateFormat.PKCS12zkey_cert_algorithm already setr$   )	r/   r   r6   r3   r'   r   r#   r%   r&   r7   r   r   r   Úkey_cert_algorithm\   s   ÿ
üz4KeySerializationEncryptionBuilder.key_cert_algorithmr   r   r   c                 C  s8   t |tƒrt|ƒdkrtdƒ‚t| j|| j| j| jd�S )Nr   r   )r4   r8   r9   )	r   r   r   r   Ú_KeySerializationEncryptionr/   r%   r&   r'   r   r   r   r   Úbuildl   s   ûz'KeySerializationEncryptionBuilder.build)
r(   r   r%   r)   r&   r*   r'   r+   r,   r-   )r0   r1   r,   r#   )r5   r   r,   r#   )r5   r	   r,   r#   )r   r   r,   r   )r
   r   r   r   r4   r8   r9   r;   r   r   r   r   r#   +   s    ú


r#   c                   @  s   e Zd Zddd„ZdS )r:   r(   r   r   r   r4   r)   r8   r*   r9   r+   c                C  s"   || _ || _|| _|| _|| _d S r.   )r/   r   r%   r&   r'   )r   r(   r   r4   r8   r9   r   r   r   r   z   s
   	
z$_KeySerializationEncryption.__init__N)
r(   r   r   r   r4   r)   r8   r*   r9   r+   r    r   r   r   r   r:   y   r!   r:   )Ú
__future__r   ÚabcÚcryptographyr   Ú"cryptography.hazmat.bindings._rustr   r   r   r   Ú%cryptography.hazmat.primitives.hashesr   ÚEnumr	   ÚABCMetar   r   r"   r#   r:   r   r   r   r   Ú<module>   s   N