U
    H|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-3g5lejbk/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