U
    /jX                     @  s   d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
m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)Encoding)ParameterFormat)PrivateFormat)PublicFormat)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/tmp/pip-unpacked-wheel-qzbw3lpx/cryptography/hazmat/primitives/_serialization.pyr	      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   len
ValueErrorr   selfr   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   '   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 )!KeySerializationEncryptionBuilderN_kdf_rounds
_hmac_hash_key_cert_algorithmr   
int | NoneHashAlgorithm | NonePBES | NoneNone)formatr    r!   r"   returnc                C  s   || _ || _|| _|| _d S N)_formatr    r!   r"   )r   r'   r    r!   r"   r   r   r   r   ,   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   r+   	TypeErrorr   r*   r!   r"   )r   r,   r   r   r   
kdf_rounds:   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   )	r*   r   PKCS12r.   r!   r   r   r    r"   r   r0   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   )	r*   r   r1   r.   r"   r   r   r    r!   r2   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/   r3   r4   )	r   r   r   r   _KeySerializationEncryptionr*   r    r!   r"   r   r   r   r   buildl   s    z'KeySerializationEncryptionBuilder.build)r
   r   r   r   r/   r3   r4   r6   r   r   r   r   r   +   s   r   c                   @  s"   e Zd ZddddddddZd	S )
r5   r   r   r#   r$   r%   )r'   r   r/   r3   r4   c                C  s"   || _ || _|| _|| _|| _d S r)   )r*   r   r    r!   r"   )r   r'   r   r/   r3   r4   r   r   r   r   z   s
    	z$_KeySerializationEncryption.__init__Nr   r   r   r   r   r5   y   s   r5   )
__future__r   abcZcryptographyr   Z"cryptography.hazmat.bindings._rustr   r   r   r   Z%cryptography.hazmat.primitives.hashesr   Enumr	   ABCMetar   r   r   r   r5   r   r   r   r   <module>   s   N