
    _fG                        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                    ej        j                    G d	 d
ej                  ZeZe                    ej        j                    G d dej                  ZeZe                    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dS )$    )annotationsN)openssl)_serializationhashes)utilsc                  R    e Zd Zej        dd            Zej        dd            ZdS )	DSAParametersreturnDSAPrivateKeyc                    dS )z8
        Generates and returns a DSAPrivateKey.
        N selfs    _/var/www/html/env/lib/python3.11/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.pygenerate_private_keyz"DSAParameters.generate_private_key             DSAParameterNumbersc                    dS )z0
        Returns a DSAParameterNumbers.
        Nr   r   s    r   parameter_numberszDSAParameters.parameter_numbers   r   r   N)r
   r   r
   r   )__name__
__module____qualname__abcabstractmethodr   r   r   r   r   r	   r	      sZ           
 	     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dS )r   r
   intc                    dS z6
        The bit length of the prime modulus.
        Nr   r   s    r   key_sizezDSAPrivateKey.key_size"   r   r   DSAPublicKeyc                    dS )zD
        The DSAPublicKey associated with this private key.
        Nr   r   s    r   
public_keyzDSAPrivateKey.public_key)   r   r   r	   c                    dS )zL
        The DSAParameters object associated with this private key.
        Nr   r   s    r   
parameterszDSAPrivateKey.parameters/   r   r   databytes	algorithm8typing.Union[asym_utils.Prehashed, hashes.HashAlgorithm]c                    dS )z 
        Signs the data
        Nr   )r   r(   r*   s      r   signzDSAPrivateKey.sign5   r   r   DSAPrivateNumbersc                    dS )z.
        Returns a DSAPrivateNumbers.
        Nr   r   s    r   private_numberszDSAPrivateKey.private_numbers?   r   r   encoding_serialization.Encodingformat_serialization.PrivateFormatencryption_algorithm)_serialization.KeySerializationEncryptionc                    dS z6
        Returns the key serialized as bytes.
        Nr   )r   r1   r3   r5   s       r   private_byteszDSAPrivateKey.private_bytesE   r   r   Nr
   r   )r
   r#   r
   r	   )r(   r)   r*   r+   r
   r)   )r
   r.   )r1   r2   r3   r4   r5   r6   r
   r)   )r   r   r   propertyr   r   r"   r%   r'   r-   r0   r9   r   r   r   r   r   !   s            X
 	   
 	   
 	    	   
 	     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dS )r#   r
   r   c                    dS r!   r   r   s    r   r"   zDSAPublicKey.key_sizeV   r   r   r	   c                    dS )zK
        The DSAParameters object associated with this public key.
        Nr   r   s    r   r'   zDSAPublicKey.parameters]   r   r   DSAPublicNumbersc                    dS )z-
        Returns a DSAPublicNumbers.
        Nr   r   s    r   public_numberszDSAPublicKey.public_numbersc   r   r   r1   r2   r3   _serialization.PublicFormatr)   c                    dS r8   r   )r   r1   r3   s      r   public_byteszDSAPublicKey.public_bytesi   r   r   	signaturer(   r*   r+   Nonec                    dS )z5
        Verifies the signature of the data.
        Nr   )r   rF   r(   r*   s       r   verifyzDSAPublicKey.verifys   r   r   otherobjectboolc                    dS )z"
        Checks equality.
        Nr   r   rJ   s     r   __eq__zDSAPublicKey.__eq__~   r   r   Nr:   r;   r
   r@   )r1   r2   r3   rC   r
   r)   )rF   r)   r(   r)   r*   r+   r
   rG   rJ   rK   r
   rL   )r   r   r   r<   r   r   r"   r'   rB   rE   rI   rO   r   r   r   r#   r#   U   s            X
 	   
 	   
 	    	    	     r   r#   c                  x    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
d
S )r   pr   qgc                    t          |t                    r*t          |t                    rt          |t                    st          d          || _        || _        || _        d S )Nz;DSAParameterNumbers p, q, and g arguments must be integers.)
isinstancer   	TypeError_p_q_g)r   rS   rT   rU   s       r   __init__zDSAParameterNumbers.__init__   sl    1c""	a%%	 a%%	
 M   r   r
   c                    | j         S N)rY   r   s    r   rS   zDSAParameterNumbers.p   	    wr   c                    | j         S r^   )rZ   r   s    r   rT   zDSAParameterNumbers.q   r_   r   c                    | j         S r^   )r[   r   s    r   rU   zDSAParameterNumbers.g   r_   r   Nbackend
typing.Anyr	   c                8    ddl m} |                    |           S Nr   )rb   ),cryptography.hazmat.backends.openssl.backendrb   load_dsa_parameter_numbersr   rb   ossls      r   r'   zDSAParameterNumbers.parameters   s6    	
 	
 	
 	
 	
 	
 ..t444r   rJ   rK   rL   c                    t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r^   )rW   r   NotImplementedrS   rT   rU   rN   s     r   rO   zDSAParameterNumbers.__eq__   sF    %!455 	"!!v LTVuw%6L46UW;LLr   strc                .    d                     |           S )Nz9<DSAParameterNumbers(p={self.p}, q={self.q}, g={self.g})>r   r3   r   s    r   __repr__zDSAParameterNumbers.__repr__   s    !6t6,,	
r   )rS   r   rT   r   rU   r   r:   r^   )rb   rc   r
   r	   rQ   r
   rl   )r   r   r   r\   r<   rS   rT   rU   r'   rO   ro   r   r   r   r   r      s               X    X    X5 5 5 5 5M M M M
 
 
 
 
 
r   r   c                  `    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	d	S )r@   yr   r   r   c                    t          |t                    st          d          t          |t                    st          d          || _        || _        d S )Nz/DSAPublicNumbers y argument must be an integer.z9parameter_numbers must be a DSAParameterNumbers instance.)rW   r   rX   r   _y_parameter_numbers)r   rr   r   s      r   r\   zDSAPublicNumbers.__init__   sd    !S!! 	OMNNN+-@AA 	K   "3r   r
   c                    | j         S r^   )rt   r   s    r   rr   zDSAPublicNumbers.y   r_   r   c                    | j         S r^   )ru   r   s    r   r   z"DSAPublicNumbers.parameter_numbers   s    &&r   Nrb   rc   r#   c                8    ddl m} |                    |           S re   )rf   rb   load_dsa_public_numbersrh   s      r   r%   zDSAPublicNumbers.public_key   s6    	
 	
 	
 	
 	
 	
 ++D111r   rJ   rK   rL   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r^   )rW   r@   rk   rr   r   rN   s     r   rO   zDSAPublicNumbers.__eq__   sB    %!122 	"!! Feg B&%*AA	
r   rl   c                .    d                     |           S )NzJ<DSAPublicNumbers(y={self.y}, parameter_numbers={self.parameter_numbers})>r   rn   r   s    r   ro   zDSAPublicNumbers.__repr__   s    ;;A6t6;L;L	
r   )rr   r   r   r   r:   r   r^   )rb   rc   r
   r#   rQ   rp   )
r   r   r   r\   r<   rr   r   r%   rO   ro   r   r   r   r@   r@      s        
4 
4 
4 
4    X ' ' ' X'2 2 2 2 2
 
 
 

 
 
 
 
 
r   r@   c                  X    e Zd ZddZedd            Zedd            ZdddZddZd	S )r.   xr   rB   r@   c                    t          |t                    st          d          t          |t                    st          d          || _        || _        d S )Nz0DSAPrivateNumbers x argument must be an integer.z3public_numbers must be a DSAPublicNumbers instance.)rW   r   rX   r@   _public_numbers_x)r   r}   rB   s      r   r\   zDSAPrivateNumbers.__init__   sa    !S!! 	PNOOO.*:;; 	E    .r   r
   c                    | j         S r^   )r   r   s    r   r}   zDSAPrivateNumbers.x   r_   r   c                    | j         S r^   )r   r   s    r   rB   z DSAPrivateNumbers.public_numbers   s    ##r   Nrb   rc   r   c                8    ddl m} |                    |           S re   )rf   rb   load_dsa_private_numbersrh   s      r   private_keyzDSAPrivateNumbers.private_key   s6    	
 	
 	
 	
 	
 	
 ,,T222r   rJ   rK   rL   c                z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r^   )rW   r.   rk   r}   rB   rN   s     r   rO   zDSAPrivateNumbers.__eq__   s>    %!233 	"!! FegM$"59M"M	
r   )r}   r   rB   r@   r:   rP   r^   )rb   rc   r
   r   rQ   )	r   r   r   r\   r<   r}   rB   r   rO   r   r   r   r.   r.      s        	 	 	 	    X $ $ $ X$3 3 3 3 3
 
 
 
 
 
r   r.   r"   r   rb   rc   r
   c                8    ddl m} |                    |           S re   )rf   rb   generate_dsa_parametersr"   rb   ri   s      r   generate_parametersr     s+     MLLLLL''111r   c                8    ddl m} |                    |           S re   )rf   rb   'generate_dsa_private_key_and_parametersr   s      r   r   r     s+     MLLLLL77AAAr   r'   rG   c                    | j                                         dvrt          d          | j                                        dvrt          d          d| j        cxk     r| j         k     sn t          d          d S )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.)rS   
bit_length
ValueErrorrT   rU   )r'   s    r   _check_dsa_parametersr     s    |  (@@@C
 
 	
 |  77GHHH
++++z|++++8999 ,+r   numbersc                
   | j         j        }t          |           | j        dk    s| j        |j        k    rt          d          | j         j        t          |j        | j        |j	                  k    rt          d          d S )Nr   zx must be > 0 and < q.z y must be equal to (g ** x % p).)
rB   r   r   r}   rT   r   rr   powrU   rS   )r   r'   s     r   _check_dsa_private_numbersr   $  s~    '9J*%%%yA~~jl2212223z|WY
#M#MMM;<<< NMr   r^   )r"   r   rb   rc   r
   r	   )r"   r   rb   rc   r
   r   )r'   r   r
   rG   )r   r.   r
   rG   )
__future__r   r   typing"cryptography.hazmat.bindings._rustr   rust_opensslcryptography.hazmat.primitivesr   r   )cryptography.hazmat.primitives.asymmetricr   
asym_utilsABCMetar	   DSAParametersWithNumbersregisterdsar   DSAPrivateKeyWithSerializationr#   DSAPublicKeyWithSerializationr   r@   r.   r   r   r   r   r   r   r   <module>r      sP  
 # " " " " " 



  F F F F F F A A A A A A A A I I I I I I    ck     )    |'5 6 6 6- - - - -ck - - - -` "/    |'5 6 6 6- - - - -S[ - - - -` !-    l&3 4 4 4,
 ,
 ,
 ,
 ,
 ,
 ,
 ,
^)
 )
 )
 )
 )
 )
 )
 )
X!
 !
 !
 !
 !
 !
 !
 !
J *.2 2 2 2 2 *.B B B B B	: 	: 	: 	:= = = = = =r   