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__PBESv1SHA1And3KeyTripleDESCBCPBESv2SHA256AndAES256CBC r
   r
   Z/opt/certbot/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   X962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   SubjectPublicKeyInfoPKCS1r   r   CompressedPoint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.   r1   r
   r
   r
   r   r*   >   s    r*   c                   @   r%   )NoEncryptionNr'   r
   r
   r
   r   r2   F   r(   r2   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formatr4   r5   r6   r   c                C   s   || _ || _|| _|| _d S N)_formatr4   r5   r6   )r   r7   r4   r5   r6   r
   r
   r   r1   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 integerr3   )	r4   r   r-   int	TypeErrorr   r9   r5   r6   )r   r:   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 setr3   )	r9   r   r   r=   r5   r   r   r4   r6   r   r?   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 setr3   )	r9   r   r   r=   r6   r   r   r4   r5   r@   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,   )r>   rA   rB   )	r-   r.   r/   r   _KeySerializationEncryptionr9   r4   r5   r6   r0   r
   r
   r   build   s   z'KeySerializationEncryptionBuilder.build)r   r   r   r   typingOptionalr<   r   r   r1   r>   rA   rB   r.   r&   rD   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 )	rC   r7   r+   r>   rA   rB   c                C   s"   || _ || _|| _|| _|| _d S r8   )r9   r+   r4   r5   r6   )r   r7   r+   r>   rA   rB   r
   r
   r   r1      s
   	
z$_KeySerializationEncryption.__init__N)r   r   r   r   r.   rE   rF   r<   r   r   r1   r
   r
   r
   r   rC      s    rC   )abcrE   cryptographyr   %cryptography.hazmat.primitives.hashesr   Enumr   r   r   r   r#   ABCMetar&   r*   r2   objectr   rC   r
   r
   r
   r   <module>   s   		O