o
    Ïó·i  ã                   @  sÜ   d dl mZ d dlZd dlmZ d dlmZ G dd„ dejƒZG dd„ dejƒZ	G d	d
„ d
ejƒZ
G dd„ dejƒ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)Ú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	   úsC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\cryptography/hazmat/primitives/_serialization.pyr      s    r   c                   @  ó$   e Zd ZdZdZdZdZdZdZdS )ÚEncodingÚPEMÚDERÚOpenSSHÚRawz
ANSI X9.62zS/MIMEN)	r   r   r   r   r   r   r   ZX962ZSMIMEr	   r	   r	   r
   r      ó    r   c                   @  s*   e Zd ZdZdZdZdZdZddd	„Zd
S )ÚPrivateFormatÚPKCS8ÚTraditionalOpenSSLr   r   ÚPKCS12ÚreturnÚ!KeySerializationEncryptionBuilderc                 C  s    | t jt jfvrtdƒ‚t| ƒS )NzUencryption_builder only supported with PrivateFormat.OpenSSH and PrivateFormat.PKCS12)r   r   r   Ú
ValueErrorr   )Úselfr	   r	   r
   Úencryption_builder%   s
   ÿz PrivateFormat.encryption_builderN)r   r   )	r   r   r   r   r   r   r   r   r   r	   r	   r	   r
   r      s    r   c                   @  r   )ÚPublicFormatz&X.509 subjectPublicKeyInfo with PKCS#1z
Raw PKCS#1r   r   zX9.62 Compressed PointzX9.62 Uncompressed PointN)	r   r   r   ZSubjectPublicKeyInfoZPKCS1r   r   ZCompressedPointZUncompressedPointr	   r	   r	   r
   r   .   r   r   c                   @  s   e Zd ZdZdS )ÚParameterFormatÚPKCS3N)r   r   r   r   r	   r	   r	   r
   r   7   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%   Úlenr   r$   ©r   r$   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-   G   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 )$r   N©Ú_kdf_roundsÚ
_hmac_hashÚ_key_cert_algorithmÚformatr   r/   ú
int | Noner0   úHashAlgorithm | Noner1   úPBES | Noner   ÚNonec                C  s   || _ || _|| _|| _d S ©N)Ú_formatr/   r0   r1   )r   r2   r/   r0   r1   r	   r	   r
   r*   L   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   r8   r0   r1   )r   r9   r	   r	   r
   Ú
kdf_roundsZ   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.   )	r8   r   r   r<   r0   r   r   r/   r1   ©r   r>   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.   )	r8   r   r   r<   r1   r   r   r/   r0   r?   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&   )r=   r@   rA   )	r'   r%   r(   r   Ú_KeySerializationEncryptionr8   r/   r0   r1   r)   r	   r	   r
   ÚbuildŒ   s   ûz'KeySerializationEncryptionBuilder.build)
r2   r   r/   r3   r0   r4   r1   r5   r   r6   )r9   r:   r   r   )r>   r   r   r   )r>   r   r   r   )r$   r%   r   r   )r   r   r   r*   r=   r@   rA   rC   r	   r	   r	   r
   r   K   s    ú


r   c                   @  s   e Zd Zddd„ZdS )rB   r2   r   r$   r%   r=   r3   r@   r4   rA   r5   c                C  s"   || _ || _|| _|| _|| _d S r7   )r8   r$   r/   r0   r1   )r   r2   r$   r=   r@   rA   r	   r	   r
   r*   š   s
   	
z$_KeySerializationEncryption.__init__N)
r2   r   r$   r%   r=   r3   r@   r4   rA   r5   r+   r	   r	   r	   r
   rB   ™   r,   rB   )Ú
__future__r   ÚabcZcryptographyr   Z%cryptography.hazmat.primitives.hashesr   ÚEnumr   r   r   r   r   ÚABCMetar   r#   r-   r   rB   r	   r	   r	   r
   Ú<module>   s   		N