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__ZPBESv1SHA1And3KeyTripleDESCBCZPBESv2SHA256AndAES256CBC© r   r   úwC:\Users\psant\Downloads\Anu Raj Backend\school\venv\Lib\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   r/   Ú	TypeErrorr!   r-   r$   r%   )r   r.   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   ÚPKCS12r1   r$   r   r!   r#   r%   ©r   r3   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   r4   r1   r%   r   r!   r#   r$   r5   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   )r2   r6   r7   )	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+   )r.   r/   r*   r!   )r3   r   r*   r!   )r3   r	   r*   r!   )r   r   r*   r   )r
   r   r   r   r2   r6   r7   r9   r   r   r   r   r!   +   s    ú


r!   c                   @  s   e Zd Zddd„ZdS )r8   r&   r   r   r   r2   r'   r6   r(   r7   r)   c                C  s"   || _ || _|| _|| _|| _d S r,   )r-   r   r#   r$   r%   )r   r&   r   r2   r6   r7   r   r   r   r   z   s
   	
z$_KeySerializationEncryption.__init__N)
r&   r   r   r   r2   r'   r6   r(   r7   r)   r   r   r   r   r   r8   y   r   r8   )Ú
__future__r   ÚabcZcryptographyr   Z"cryptography.hazmat.bindings._rustr   r   r   r   Z%cryptography.hazmat.primitives.hashesr   ÚEnumr	   ÚABCMetar   r   r    r!   r8   r   r   r   r   Ú<module>   s   N