o
    CZh                     @  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	   d/var/www/html/lang_env/lib/python3.10/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   		O