
    +hG                     .   d dl mZ d dlZd dlZd dlmZ d dlmZm	Z	 d dl
mZ  G d dej                        ZeZej!                  ej"                  j                          G d	 d
ej                        ZeZej!                  ej"                  j$                          G d dej                        ZeZej!                  ej"                  j(                          G d d      Z G d d      Z G d d      Z	 d	 	 	 	 	 ddZ	 d	 	 	 	 	 ddZddZddZy)    )annotationsN)openssl)_serializationhashes)utilsc                  X    e Zd Zej                  dd       Zej                  dd       Zy)DSAParametersc                     y)z8
        Generates and returns a DSAPrivateKey.
        N selfs    `/var/www/html/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.pygenerate_private_keyz"DSAParameters.generate_private_key           c                     y)z0
        Returns a DSAParameterNumbers.
        Nr   r   s    r   parameter_numberszDSAParameters.parameter_numbers   r   r   N)returnDSAPrivateKeyr   DSAParameterNumbers)__name__
__module____qualname__abcabstractmethodr   r   r   r   r   r	   r	      s4     
 	 r   r	   )	metaclassc                     e Zd Zeej
                  dd              Zej
                  d	d       Zej
                  d
d       Zej
                  	 	 	 	 	 	 dd       Z	ej
                  dd       Z
ej
                  	 	 	 	 	 	 	 	 dd       Zy)r   c                     yz6
        The bit length of the prime modulus.
        Nr   r   s    r   key_sizezDSAPrivateKey.key_size"   r   r   c                     y)zD
        The DSAPublicKey associated with this private key.
        Nr   r   s    r   
public_keyzDSAPrivateKey.public_key)   r   r   c                     y)zL
        The DSAParameters object associated with this private key.
        Nr   r   s    r   
parameterszDSAPrivateKey.parameters/   r   r   c                     y)z 
        Signs the data
        Nr   )r   data	algorithms      r   signzDSAPrivateKey.sign5   r   r   c                     y)z.
        Returns a DSAPrivateNumbers.
        Nr   r   s    r   private_numberszDSAPrivateKey.private_numbers?   r   r   c                     yz6
        Returns the key serialized as bytes.
        Nr   )r   encodingformatencryption_algorithms       r   private_byteszDSAPrivateKey.private_bytesE   r   r   Nr   int)r   DSAPublicKeyr   r	   )r'   bytesr(   8typing.Union[asym_utils.Prehashed, hashes.HashAlgorithm]r   r6   )r   DSAPrivateNumbers)r.   _serialization.Encodingr/   z_serialization.PrivateFormatr0   z)_serialization.KeySerializationEncryptionr   r6   )r   r   r   propertyr   r   r!   r#   r%   r)   r+   r1   r   r   r   r   r   !   s      
 	 
 	 
 	 L 
	  	 
 	) - H	
 
 r   r   c                     e Zd Zeej
                  dd              Zej
                  d	d       Zej
                  d
d       Zej
                  	 	 	 	 	 	 dd       Z	ej
                  	 	 	 	 	 	 	 	 dd       Z
ej
                  dd       Zy)r4   c                     yr    r   r   s    r   r!   zDSAPublicKey.key_sizeV   r   r   c                     y)zK
        The DSAParameters object associated with this public key.
        Nr   r   s    r   r%   zDSAPublicKey.parameters]   r   r   c                     y)z-
        Returns a DSAPublicNumbers.
        Nr   r   s    r   public_numberszDSAPublicKey.public_numbersc   r   r   c                     yr-   r   )r   r.   r/   s      r   public_byteszDSAPublicKey.public_bytesi   r   r   c                     y)z5
        Verifies the signature of the data.
        Nr   )r   	signaturer'   r(   s       r   verifyzDSAPublicKey.verifys   r   r   c                     y)z"
        Checks equality.
        Nr   r   others     r   __eq__zDSAPublicKey.__eq__~   r   r   Nr2   r5   r   DSAPublicNumbers)r.   r9   r/   z_serialization.PublicFormatr   r6   )rC   r6   r'   r6   r(   r7   r   NonerG   objectr   bool)r   r   r   r:   r   r   r!   r%   r?   rA   rD   rH   r   r   r   r4   r4   U   s      
 	 
 	 
 	) , 
	  	  L	
 
  	 r   r4   c                  d    e Zd Zd	dZed
d       Zed
d       Zed
d       ZdddZddZ	ddZ
y)r   c                    t        |t              r t        |t              rt        |t              st        d      || _        || _        || _        y )Nz;DSAParameterNumbers p, q, and g arguments must be integers.)
isinstancer3   	TypeError_p_q_g)r   pqgs       r   __init__zDSAParameterNumbers.__init__   sG    1c"a%a%M  r   c                    | j                   S N)rS   r   s    r   rV   zDSAParameterNumbers.p       wwr   c                    | j                   S r[   )rT   r   s    r   rW   zDSAParameterNumbers.q   r\   r   c                    | j                   S r[   )rU   r   s    r   rX   zDSAParameterNumbers.g   r\   r   Nc                0    ddl m} |j                  |       S Nr   )backend),cryptography.hazmat.backends.openssl.backendra   load_dsa_parameter_numbersr   ra   ossls      r   r%   zDSAParameterNumbers.parameters   s    	
 ..t44r   c                    t        |t              st        S | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r[   )rQ   r   NotImplementedrV   rW   rX   rF   s     r   rH   zDSAParameterNumbers.__eq__   sJ    %!45!!vv LTVVuww%6L466UWW;LLr   c                &    dj                  |       S )Nz9<DSAParameterNumbers(p={self.p}, q={self.q}, g={self.g})>r   r/   r   s    r   __repr__zDSAParameterNumbers.__repr__   s    !6t6,	
r   )rV   r3   rW   r3   rX   r3   r2   r[   )ra   
typing.Anyr   r	   rL   r   str)r   r   r   rY   r:   rV   rW   rX   r%   rH   rj   r   r   r   r   r      sS          5M
r   r   c                  R    e Zd ZddZed	d       Zed
d       ZdddZddZddZ	y)rJ   c                    t        |t              st        d      t        |t              st        d      || _        || _        y )Nz/DSAPublicNumbers y argument must be an integer.z9parameter_numbers must be a DSAParameterNumbers instance.)rQ   r3   rR   r   _y_parameter_numbers)r   yr   s      r   rY   zDSAPublicNumbers.__init__   sE    !S!MNN+-@AK  "3r   c                    | j                   S r[   )rp   r   s    r   rr   zDSAPublicNumbers.y   r\   r   c                    | j                   S r[   )rq   r   s    r   r   z"DSAPublicNumbers.parameter_numbers   s    &&&r   Nc                0    ddl m} |j                  |       S r`   )rb   ra   load_dsa_public_numbersrd   s      r   r#   zDSAPublicNumbers.public_key   s    	
 ++D11r   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r[   )rQ   rJ   rg   rr   r   rF   s     r   rH   zDSAPublicNumbers.__eq__   sD    %!12!! FFegg B&&%*A*AA	
r   c                &    dj                  |       S )NzJ<DSAPublicNumbers(y={self.y}, parameter_numbers={self.parameter_numbers})>r   ri   r   s    r   rj   zDSAPublicNumbers.__repr__   s    ;;A6t6;L	
r   )rr   r3   r   r   r2   r   r[   )ra   rk   r   r4   rL   rl   )
r   r   r   rY   r:   rr   r   r#   rH   rj   r   r   r   rJ   rJ      s>    
4   ' '2

r   rJ   c                  J    e Zd ZddZedd       Zed	d       Zd
ddZddZy)r8   c                    t        |t              st        d      t        |t              st        d      || _        || _        y )Nz0DSAPrivateNumbers x argument must be an integer.z3public_numbers must be a DSAPublicNumbers instance.)rQ   r3   rR   rJ   _public_numbers_x)r   xr?   s      r   rY   zDSAPrivateNumbers.__init__   sD    !S!NOO.*:;E   .r   c                    | j                   S r[   )r|   r   s    r   r}   zDSAPrivateNumbers.x   r\   r   c                    | j                   S r[   )r{   r   s    r   r?   z DSAPrivateNumbers.public_numbers   s    ###r   Nc                0    ddl m} |j                  |       S r`   )rb   ra   load_dsa_private_numbersrd   s      r   private_keyzDSAPrivateNumbers.private_key   s    	
 ,,T22r   c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r[   )rQ   r8   rg   r}   r?   rF   s     r   rH   zDSAPrivateNumbers.__eq__   s@    %!23!! FFeggM$"5"59M9M"M	
r   )r}   r3   r?   rJ   r2   rI   r[   )ra   rk   r   r   rL   )	r   r   r   rY   r:   r}   r?   r   rH   r   r   r   r8   r8      s9    	   $ $3
r   r8   c                0    ddl m} |j                  |       S r`   )rb   ra   generate_dsa_parametersr!   ra   re   s      r   generate_parametersr     s     M''11r   c                0    ddl m} |j                  |       S r`   )rb   ra   'generate_dsa_private_key_and_parametersr   s      r   r   r     s     M77AAr   c                   | j                   j                         dvrt        d      | j                  j                         dvrt        d      d| j                  cxk  r| j                   k  st        d       t        d      y )N)i   i   i   i   z5p must be exactly 1024, 2048, 3072, or 4096 bits long)         z,q must be exactly 160, 224, or 256 bits long   zg, p don't satisfy 1 < g < p.)rV   
bit_length
ValueErrorrW   rX   )r%   s    r   _check_dsa_parametersr     s    || (@@C
 	
 || 7GHH
+z||+899 ,899 ,r   c                F   | j                   j                  }t        |       | j                  dk  s| j                  |j                  k\  rt        d      | j                   j                  t        |j                  | j                  |j                        k7  rt        d      y )Nr   zx must be > 0 and < q.z y must be equal to (g ** x % p).)
r?   r   r   r}   rW   r   rr   powrX   rV   )numbersr%   s     r   _check_dsa_private_numbersr   $  s|    ''99J*%yyA~jll21223z||WYY
#MM;<< Nr   r[   )r!   r3   ra   rk   r   r	   )r!   r3   ra   rk   r   r   )r%   r   r   rK   )r   r8   r   rK   )
__future__r   r   typing"cryptography.hazmat.bindings._rustr   rust_opensslcryptography.hazmat.primitivesr   r   )cryptography.hazmat.primitives.asymmetricr   
asym_utilsABCMetar	   DSAParametersWithNumbersregisterdsar   DSAPrivateKeyWithSerializationr4   DSAPublicKeyWithSerializationr   rJ   r8   r   r   r   r   r   r   r   <module>r      s$  
 # 
  F A Ickk  )    |''55 6-ckk -` "/    |''55 6-S[[ -` !-    l&&33 4,
 ,
^)
 )
X!
 !
J *.22&22 *.BB&BB	:=r   