a
    còf  ã                   @  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	   új/home/httpd/docs/test/DocsMgr/lib/python3.9/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v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   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   r1   r*   r+   r,   r	   r	   r
   r&   L   s    z*KeySerializationEncryptionBuilder.__init__Úint)Úroundsr   c                 C  sJ   | j d u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#   r4   Ú	TypeErrorr   r3   r+   r,   )r   r5   r	   r	   r
   Ú
kdf_roundsZ   s    

üz,KeySerializationEncryptionBuilder.kdf_roundsr   )Ú	algorithmr   c                 C  s<   | j tjurtdƒ‚| jd ur&tdƒ‚t| j | j|| jd�S )Nz2hmac_hash only supported with PrivateFormat.PKCS12zhmac_hash already setr)   )	r3   r   r   r7   r+   r   r   r*   r,   ©r   r9   r	   r	   r
   Ú	hmac_hashk   s    ÿ
üz+KeySerializationEncryptionBuilder.hmac_hashr   c                 C  s<   | j tjurtdƒ‚| jd ur&tdƒ‚t| j | j| j|d�S )Nz;key_cert_algorithm only supported with PrivateFormat.PKCS12zkey_cert_algorithm already setr)   )	r3   r   r   r7   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"   )r8   r;   r<   )	r#   r    r$   r   Ú_KeySerializationEncryptionr3   r*   r+   r,   r%   r	   r	   r
   Úbuild�   s    ûz'KeySerializationEncryptionBuilder.build)r   r   r   r&   r8   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-   r.   r/   )r1   r!   r8   r;   r<   c                C  s"   || _ || _|| _|| _|| _d S r2   )r3   r!   r*   r+   r,   )r   r1   r!   r8   r;   r<   r	   r	   r
   r&   ›   s
    	z$_KeySerializationEncryption.__init__Nr'   r	   r	   r	   r
   r=   š   s   r=   )Ú
__future__r   ÚabcZcryptographyr   Z%cryptography.hazmat.primitives.hashesr   ÚEnumr   r   r   r   r   ÚABCMetar   r   r(   r   r=   r	   r	   r	   r
   Ú<module>   s   		O