
    g                       d dl mZ d dl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j                        Z
 G d dej                        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)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     /var/www/html/FastMealFinder_FlaskServer-InitialRelease/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/_serialization.pyr   r      s    $K!Jr   r   c                  $    e Zd ZdZdZdZdZdZdZy)EncodingPEMDEROpenSSHRawz
ANSI X9.62zS/MIMEN)	r   r	   r
   r   r   r   r   X962SMIMEr   r   r   r   r      s     
C
CG
CDEr   r   c                  (    e Zd ZdZdZdZdZdZddZy)	PrivateFormatPKCS8TraditionalOpenSSLr   r   PKCS12c                r    | t         j                  t         j                  fvrt        d      t	        |       S )NzUencryption_builder only supported with PrivateFormat.OpenSSH and PrivateFormat.PKCS12)r   r   r   
ValueError!KeySerializationEncryptionBuilder)selfs    r   encryption_builderz PrivateFormat.encryption_builder%   s:    --}/C/CDD,  166r   N)returnr   )	r   r	   r
   r   r   r   r   r   r!   r   r   r   r   r      s!    E-
CGF7r   r   c                  $    e Zd ZdZdZdZdZdZdZy)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$   .   s"    CEG
C.O2r   r$   c                      e Zd ZdZy)ParameterFormatPKCS3N)r   r	   r
   r+   r   r   r   r*   r*   7   s    Er   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lenr   passwordr    r8   s     r   __init__z BestAvailableEncryption.__init__@   s*    (E*c(mq.@@AA r   N)r8   r6   r   r	   r
   r:   r   r   r   r2   r2   ?   s    !r   r2   c                      e Zd Zy)NoEncryptionNr.   r   r   r   r=   r=   G   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)r   N_kdf_rounds
_hmac_hash_key_cert_algorithmc               <    || _         || _        || _        || _        y N)_formatr@   rA   rB   )r    formatr@   rA   rB   s        r   r:   z*KeySerializationEncryptionBuilder.__init__L   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   r5   int	TypeErrorr   rE   rA   rB   )r    roundss     r   
kdf_roundsz,KeySerializationEncryptionBuilder.kdf_roundsZ   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?   )	rE   r   r   rJ   rA   r   r   r@   rB   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?   )	rE   r   r   rJ   rB   r   r   r@   rA   rN   s     r   key_cert_algorithmz4KeySerializationEncryptionBuilder.key_cert_algorithm|   si     <<}333'  ##/=>>0LL(( )	
 	
r   c                    t        |t              rt        |      dk(  rt        d      t	        | j
                  || j                  | j                  | j                        S )Nr   r4   )rL   rP   rR   )	r5   r6   r7   r   _KeySerializationEncryptionrE   r@   rA   rB   r9   s     r   buildz'KeySerializationEncryptionBuilder.build   sS    (E*c(mq.@@AA*LL''oo#77
 	
r   )
rF   r   r@   
int | NonerA   HashAlgorithm | NonerB   PBES | Noner"   None)rK   rI   r"   r   )rO   r   r"   r   )rO   r   r"   r   )r8   r6   r"   r-   )r   r	   r
   r:   rL   rP   rR   rU   r   r   r   r   r   K   sv    
 #'+/+/77  	7
 )7 )7 
7
"
&
	*
"

	*
"

r   r   c                  (    e Zd Z	 	 	 	 	 	 	 	 	 	 ddZy)rT   c               J    || _         || _        || _        || _        || _        y rD   )rE   r8   r@   rA   rB   )r    rF   r8   rL   rP   rR   s         r   r:   z$_KeySerializationEncryption.__init__   s)      %##5 r   N)
rF   r   r8   r6   rL   rV   rP   rW   rR   rX   r;   r   r   r   rT   rT      s7    66 6
 6 (6 (6r   rT   )
__future__r   abccryptographyr   %cryptography.hazmat.primitives.hashesr   Enumr   r   r   r$   r*   ABCMetar-   r2   r=   r   rT   r   r   r   <module>rb      s   
 # 
  ?K5:: K
uzz 7EJJ 7 35:: 3ejj 	3;; 	!8 !	- 	L
 L
^6"< 6r   