o
    Vh                     @  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__PBESv1SHA1And3KeyTripleDESCBCPBESv2SHA256AndAES256CBC r   r   /var/www/html/construction_image-detection-poc/venv/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   X962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   SubjectPublicKeyInfoPKCS1r   r   CompressedPoint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   r2   r   r   r   r   r+   ?       r+   c                   @  r&   )NoEncryptionNr(   r   r   r   r   r5   G   r)   r5   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   r7   
int | Noner8   HashAlgorithm | Noner9   PBES | Noner   Nonec                C  s   || _ || _|| _|| _d S N)_formatr7   r8   r9   )r   r:   r7   r8   r9   r   r   r   r2   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 integerr6   )	r7   r   r/   rB   	TypeErrorr   r@   r8   r9   )r   rA   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 setr6   )	r@   r   r   rD   r8   r   r   r7   r9   r   rF   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 setr6   )	r@   r   r   rD   r9   r   r   r7   r8   rG   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.   )rE   rH   rI   )	r/   r-   r0   r   _KeySerializationEncryptionr@   r7   r8   r9   r1   r   r   r   build   s   z'KeySerializationEncryptionBuilder.build)
r:   r   r7   r;   r8   r<   r9   r=   r   r>   )rA   rB   r   r   )rF   r   r   r   )rF   r   r   r   )r,   r-   r   r'   )r   r   r   r2   rE   rH   rI   rK   r   r   r   r   r   K   s    


r   c                   @  s   e Zd ZdddZdS )rJ   r:   r   r,   r-   rE   r;   rH   r<   rI   r=   c                C  s"   || _ || _|| _|| _|| _d S r?   )r@   r,   r7   r8   r9   )r   r:   r,   rE   rH   rI   r   r   r   r2      s
   	
z$_KeySerializationEncryption.__init__N)
r:   r   r,   r-   rE   r;   rH   r<   rI   r=   r3   r   r   r   r   rJ      r4   rJ   )
__future__r   abccryptographyr   %cryptography.hazmat.primitives.hashesr   Enumr   r   r   r   r$   ABCMetar'   r+   r5   r   rJ   r   r   r   r   <module>   s   		O