
    2iX                       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
ej                        Z G d dej                        Z G d de      Z G d de      Z G d d      Z G d de      Zy)    )annotationsN)utils)Encoding)ParameterFormat)PrivateFormat)PublicFormat)HashAlgorithmc                      e Zd ZdZdZy)PBESz%PBESv1 using SHA1 and 3-Key TripleDESz)PBESv2 using SHA256 PBKDF2 and AES256 CBCN)__name__
__module____qualname__PBESv1SHA1And3KeyTripleDESCBCPBESv2SHA256AndAES256CBC     c/var/www/html/qr/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/_serialization.pyr   r      s    $K!Jr   r   c                      e Zd Zy)KeySerializationEncryptionNr   r   r   r   r   r   r   r          r   r   )	metaclassc                      e Zd ZddZy)BestAvailableEncryptionc                d    t        |t              rt        |      dk(  rt        d      || _        y )Nr   !Password must be 1 or more bytes.)
isinstancebyteslen
ValueErrorpasswordselfr!   s     r   __init__z BestAvailableEncryption.__init__    s*    (E*c(mq.@@AA r   N)r!   r   r   r   r   r$   r   r   r   r   r      s    !r   r   c                      e Zd Zy)NoEncryptionNr   r   r   r   r'   r'   '   r   r   r'   c                  `    e Zd Zdddd	 	 	 	 	 	 	 	 	 ddZd	dZ	 	 	 	 d
dZ	 	 	 	 ddZddZy)!KeySerializationEncryptionBuilderN_kdf_rounds
_hmac_hash_key_cert_algorithmc               <    || _         || _        || _        || _        y N)_formatr+   r,   r-   )r#   formatr+   r,   r-   s        r   r$   z*KeySerializationEncryptionBuilder.__init__,   s"     &$#6 r   c                    | j                   t        d      t        |t              st	        d      |dk  rt        d      t        | j                  || j                  | j                        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)   r0   r,   r-   )r#   roundss     r   
kdf_roundsz,KeySerializationEncryptionBuilder.kdf_rounds:   sj    '566&#&;<<A:DEE0LL $ 8 8	
 	
r   c                    | j                   t        j                  urt        d      | j                  t        d      t        | j                   | j                  || j                        S )Nz2hmac_hash only supported with PrivateFormat.PKCS12zhmac_hash already setr*   )	r0   r   PKCS12r5   r,   r    r)   r+   r-   r#   	algorithms     r   	hmac_hashz+KeySerializationEncryptionBuilder.hmac_hashK   sg     <<}333D  ??&4550LL((  $ 8 8	
 	
r   c                    | j                   t        j                  urt        d      | j                  t        d      t        | j                   | j                  | j                  |      S )Nz;key_cert_algorithm only supported with PrivateFormat.PKCS12zkey_cert_algorithm already setr*   )	r0   r   r9   r5   r-   r    r)   r+   r,   r:   s     r   key_cert_algorithmz4KeySerializationEncryptionBuilder.key_cert_algorithm\   sg     <<}333M  ##/=>>0LL(( )	
 	
r   c                    t        |t              rt        |      dk(  rt        d      t	        | j
                  || j                  | j                  | j                        S )Nr   r   )r7   r<   r>   )	r   r   r   r    _KeySerializationEncryptionr0   r+   r,   r-   r"   s     r   buildz'KeySerializationEncryptionBuilder.buildl   sS    (E*c(mq.@@AA*LL''oo#77
 	
r   )
r1   r   r+   
int | Noner,   HashAlgorithm | Noner-   PBES | NonereturnNone)r6   r4   rE   r)   )r;   r	   rE   r)   )r;   r   rE   r)   )r!   r   rE   r   )r   r   r   r$   r7   r<   r>   rA   r   r   r   r)   r)   +   sv    
 #'+/+/77  	7
 )7 )7 
7
"
&
	*
"

	*
 

r   r)   c                  (    e Zd Z	 	 	 	 	 	 	 	 	 	 ddZy)r@   c               J    || _         || _        || _        || _        || _        y r/   )r0   r!   r+   r,   r-   )r#   r1   r!   r7   r<   r>   s         r   r$   z$_KeySerializationEncryption.__init__z   s)      %##5 r   N)
r1   r   r!   r   r7   rB   r<   rC   r>   rD   r%   r   r   r   r@   r@   y   s7    66 6
 6 (6 (6r   r@   )
__future__r   abccryptographyr   "cryptography.hazmat.bindings._rustr   r   r   r   %cryptography.hazmat.primitives.hashesr	   Enumr   ABCMetar   r   r'   r)   r@   r   r   r   <module>rP      sz   
 # 
  C N K ?K5:: K
	3;; 	!8 !	- 	K
 K
\6"< 6r   