U
    ʹ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__ZPBESv1SHA1And3KeyTripleDESCBCZPBESv2SHA256AndAES256CBC r	   r	   q/var/www/html/timesheet/backend/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   SubjectPublicKeyInfo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   7   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ddddZdS )BestAvailableEncryptionbytes)passwordc                 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!   ?   s   r!   c                   @  s   e Zd ZdS )NoEncryptionNr   r	   r	   r	   r
   r*   G   s   r*   c                   @  sl   e Zd Zddddddddddd	d
Zdd dddZdd dddZdd dddZdddddZdS )r   N_kdf_rounds
_hmac_hash_key_cert_algorithmr   
int | NoneHashAlgorithm | NonePBES | NoneNone)formatr,   r-   r.   r   c                C  s   || _ || _|| _|| _d S N)_formatr,   r-   r.   )r   r3   r,   r-   r.   r	   r	   r
   r(   L   s    z*KeySerializationEncryptionBuilder.__init__int)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%   r6   	TypeErrorr   r5   r-   r.   )r   r7   r	   r	   r
   
kdf_roundsZ   s    

z,KeySerializationEncryptionBuilder.kdf_roundsr   )	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+   )	r5   r   r   r9   r-   r   r   r,   r.   r   r;   r	   r	   r
   	hmac_hashk   s    
z+KeySerializationEncryptionBuilder.hmac_hashr   c                 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+   )	r5   r   r   r9   r.   r   r   r,   r-   r<   r	   r	   r
   key_cert_algorithm|   s    
z4KeySerializationEncryptionBuilder.key_cert_algorithmr"   r   )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=   r>   )	r%   r"   r&   r   _KeySerializationEncryptionr5   r,   r-   r.   r'   r	   r	   r
   build   s    z'KeySerializationEncryptionBuilder.build)r   r   r   r(   r:   r=   r>   r@   r	   r	   r	   r
   r   K   s   r   c                   @  s"   e Zd ZddddddddZd	S )
r?   r   r"   r/   r0   r1   )r3   r#   r:   r=   r>   c                C  s"   || _ || _|| _|| _|| _d S r4   )r5   r#   r,   r-   r.   )r   r3   r#   r:   r=   r>   r	   r	   r
   r(      s
    	z$_KeySerializationEncryption.__init__Nr)   r	   r	   r	   r
   r?      s   r?   )
__future__r   abccryptographyr   Z%cryptography.hazmat.primitives.hashesr   Enumr   r   r   r   r   ABCMetar   r!   r*   r   r?   r	   r	   r	   r
   <module>   s   		N