U
    EZhD                     @   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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   t/home/aprabhat/apps/x.techxrdev.in/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&   r   r7   r   r   r   r	   <module>   s   		O