U
    ÒZjL  ã                   @   sÚ   d dl 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eƒZG dd„ deƒZdS )é    N)Ú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   úp/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/cryptography/hazmat/primitives/_serialization.pyr      s   r   c                   @   s$   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
      s   r
   c                   @   s.   e Zd ZdZdZdZdZdZddœdd	„Zd
S )ÚPrivateFormatÚPKCS8ÚTraditionalOpenSSLr   r   ÚPKCS12Ú!KeySerializationEncryptionBuilder)Úreturnc                 C   s    | t jt jfk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      s   r   c                   @   s$   e Zd ZdZdZdZdZdZdZdS )Ú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   -   s   r   c                   @   s   e Zd ZdZdS )ÚParameterFormatÚPKCS3N)r   r   r   r   r   r   r   r	   r   6   s   r   c                   @   s   e Zd ZdS )ÚKeySerializationEncryptionN©r   r   r   r   r   r   r	   r   :   s   r   )Ú	metaclassc                   @   s   e Zd Zedœdd„ZdS )ÚBestAvailableEncryption)Úpasswordc                 C   s(   t |tƒrt|ƒdkrtdƒ‚|| _d S )Nr   ú!Password must be 1 or more bytes.)Ú
isinstanceÚbytesÚlenr   r   ©r   r   r   r   r	   Ú__init__?   s    z BestAvailableEncryption.__init__N)r   r   r   r"   r%   r   r   r   r	   r   >   s   r   c                   @   s   e Zd ZdS )ÚNoEncryptionNr   r   r   r   r	   r&   F   s   r&   c                   @   s~   e Zd Zddddœeeje eje eje ddœdd„Z	ed dœdd„Z
ed d	œd
d„Zed d	œdd„Zeedœdd„ZdS )r   N©Ú_kdf_roundsÚ
_hmac_hashÚ_key_cert_algorithm)Úformatr(   r)   r*   r   c                C   s   || _ || _|| _|| _d S ©N)Ú_formatr(   r)   r*   )r   r+   r(   r)   r*   r   r   r	   r%   K   s    z*KeySerializationEncryptionBuilder.__init__)Úroundsr   c                 C   sJ   | j d k	rtdƒ‚t|tƒs$tdƒ‚|dk r4t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!   ÚintÚ	TypeErrorr   r-   r)   r*   )r   r.   r   r   r	   Ú
kdf_roundsY   s    

üz,KeySerializationEncryptionBuilder.kdf_rounds)Ú	algorithmr   c                 C   s<   | j tjk	rtdƒ‚| jd k	r&tdƒ‚t| j | j|| jd�S )Nz2hmac_hash only supported with PrivateFormat.PKCS12zhmac_hash already setr'   )	r-   r   r   r1   r)   r   r   r(   r*   ©r   r3   r   r   r	   Ú	hmac_hashj   s    ÿ
üz+KeySerializationEncryptionBuilder.hmac_hashc                 C   s<   | j tjk	rtdƒ‚| jd k	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   r   r1   r*   r   r   r(   r)   r4   r   r   r	   Úkey_cert_algorithm{   s    ÿ
üz4KeySerializationEncryptionBuilder.key_cert_algorithm)r   r   c                 C   s8   t |tƒrt|ƒdkrtdƒ‚t| j|| j| j| jd�S )Nr   r    )r2   r5   r6   )	r!   r"   r#   r   Ú_KeySerializationEncryptionr-   r(   r)   r*   r$   r   r   r	   ÚbuildŒ   s    ûz'KeySerializationEncryptionBuilder.build)r   r   r   r   ÚtypingÚOptionalr0   r   r   r%   r2   r5   r6   r"   r   r8   r   r   r   r	   r   J   s$   úùþþr   c                   @   s4   e Zd Zeeeje eje eje	 dœdd„Z
dS )r7   )r+   r   r2   r5   r6   c                C   s"   || _ || _|| _|| _|| _d S r,   )r-   r   r(   r)   r*   )r   r+   r   r2   r5   r6   r   r   r	   r%   š   s
    	z$_KeySerializationEncryption.__init__N)r   r   r   r   r"   r9   r:   r0   r   r   r%   r   r   r   r	   r7   ™   s   ùr7   )Úabcr9   Zcryptographyr   Z%cryptography.hazmat.primitives.hashesr   ÚEnumr   r
   r   r   r   ÚABCMetar   r   r&   Úobjectr   r7   r   r   r   r	   Ú<module>   s   		O