o
    cL                     @   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e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   Qusr/lib/python3.10/site-packages/cryptography/hazmat/primitives/_serialization.pyr      s    r   c                   @   $   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          r   c                   @   s*   e Zd ZdZdZdZdZdZddd	Zd
S )PrivateFormatPKCS8TraditionalOpenSSLr   r   PKCS12return!KeySerializationEncryptionBuilderc                 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   r	   r      s    r   c                   @   r
   )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   -   r   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                   @      e Zd ZdS )KeySerializationEncryptionNr   r   r   r   r   r   r	   r   :       r   )	metaclassc                   @   s   e Zd Zdef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                   @   r   )NoEncryptionNr   r   r   r   r	   r*   F   r    r*   c                   @   s   e Zd Zdddddedeje deje deje ddf
dd	Z	d
edd fddZ
dedd fddZdedd fddZdedef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__roundsc                 C   sJ   | j d ur	tdt|tstd|dk rt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   r1   r-   r.   )r   r2   r   r   r	   
kdf_roundsY   s   

z,KeySerializationEncryptionBuilder.kdf_rounds	algorithmc                 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+   )	r1   r   r   r5   r-   r   r   r,   r.   r   r7   r   r   r	   	hmac_hashj   s   
z+KeySerializationEncryptionBuilder.hmac_hashc                 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+   )	r1   r   r   r5   r.   r   r   r,   r-   r8   r   r   r	   key_cert_algorithm{   s   
z4KeySerializationEncryptionBuilder.key_cert_algorithmr#   c                 C   s8   t |trt|dkrtdt| j|| j| j| jdS )Nr   r$   )r6   r9   r:   )	r%   r&   r'   r   _KeySerializationEncryptionr1   r,   r-   r.   r(   r   r   r	   build   s   z'KeySerializationEncryptionBuilder.build)r   r   r   r   typingOptionalr4   r   r   r)   r6   r9   r:   r&   r   r<   r   r   r   r	   r   J   s6    


r   c                   @   s<   e Zd Zdededeje deje deje	 f
ddZ
dS )	r;   r/   r#   r6   r9   r:   c                C   s"   || _ || _|| _|| _|| _d S r0   )r1   r#   r,   r-   r.   )r   r/   r#   r6   r9   r:   r   r   r	   r)      s
   	
z$_KeySerializationEncryption.__init__N)r   r   r   r   r&   r=   r>   r4   r   r   r)   r   r   r   r	   r;      s    r;   )abcr=   cryptographyr   Z%cryptography.hazmat.primitives.hashesr   Enumr   r   r   r   r   ABCMetar   r"   r*   objectr   r;   r   r   r   r	   <module>   s   		O