
     h                     h   d dl Z d dlZd dlmZmZ d dlmZ  G d de j                  Z	e	Z
 G d de j                  ZeZ G d	 d
e j                  ZeZ G d d          Z G d d          Z G d d          Z	 ddedej        de	fdZ	 ddedej        defdZdeddfdZdeddfdZdS )    N)_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    i/var/www/html/Sam_Eipo/venv/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            	       Z   e Zd Zeej        defd                        Zej        dd            Zej        de	fd            Z
ej        dedej        ej        ej        f         defd            Zej        dd
            Zej        dej        dej        dej        defd            ZdS )r	   r   c                     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   c                     dS )zL
        The DSAParameters object associated with this private key.
        Nr   r   s    r   
parameterszDSAPrivateKey.parameters,   r   r   data	algorithmc                     dS )z 
        Signs the data
        Nr   )r   r$   r%   s      r   signzDSAPrivateKey.sign2   r   r   DSAPrivateNumbersc                     dS )z.
        Returns a DSAPrivateNumbers.
        Nr   r   s    r   private_numberszDSAPrivateKey.private_numbers<   r   r   encodingformatencryption_algorithmc                     dS z6
        Returns the key serialized as bytes.
        Nr   )r   r+   r,   r-   s       r   private_byteszDSAPrivateKey.private_bytesB   r   r   N)r   r   )r   r(   )r   r   r   propertyr   r   intr   r!   r   r#   bytestypingUnion
asym_utils	Prehashedr   HashAlgorithmr'   r*   r   EncodingPrivateFormatKeySerializationEncryptionr0   r   r   r   r	   r	      s_       #     X
 	   
 	M    
 	 <
 4f6J JK 
	    	   
 	 ) , -G	
 
     r   r	   c            	       .   e Zd Zeej        defd                        Zej        defd            Z	ej        dd            Z
ej        dej        dej        defd            Zej        d	ed
edej        ej        ej        f         ddfd            ZdS )r   r   c                     dS r   r   r   s    r   r   zDSAPublicKey.key_sizeR   r   r   c                     dS )zK
        The DSAParameters object associated with this public key.
        Nr   r   s    r   r#   zDSAPublicKey.parametersY   r   r   DSAPublicNumbersc                     dS )z-
        Returns a DSAPublicNumbers.
        Nr   r   s    r   public_numberszDSAPublicKey.public_numbers_   r   r   r+   r,   c                     dS r/   r   )r   r+   r,   s      r   public_byteszDSAPublicKey.public_bytese   r   r   	signaturer$   r%   Nc                     dS )z5
        Verifies the signature of the data.
        Nr   )r   rD   r$   r%   s       r   verifyzDSAPublicKey.verifyo   r   r   )r   r?   )r   r   r   r1   r   r   r2   r   r   r#   rA   r   r9   PublicFormatr3   rC   r4   r5   r6   r7   r   r8   rF   r   r   r   r   r   Q   s8       #     X
 	M    
 	   
 	 ) + 
	    	  <
 4f6J JK	
 
     r   r   c                       e Zd ZdededefdZedefd            Zedefd            Zedefd            Zdd
e	j
        defdZdedefdZdefdZd	S )r   p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.)
isinstancer2   	TypeError_p_q_g)r   rI   rJ   rK   s       r   __init__zDSAParameterNumbers.__init__   sl    1c""	a%%	 a%%	
 M   r   r   c                     | j         S N)rO   r   s    r   rI   zDSAParameterNumbers.p   	    wr   c                     | j         S rT   )rP   r   s    r   rJ   zDSAParameterNumbers.q   rU   r   c                     | j         S rT   )rQ   r   s    r   rK   zDSAParameterNumbers.g   rU   r   Nbackendc                 8    ddl m} |                    |           S Nr   )rX   ),cryptography.hazmat.backends.openssl.backendrX   load_dsa_parameter_numbersr   rX   ossls      r   r#   zDSAParameterNumbers.parameters   s6    	
 	
 	
 	
 	
 	
 ..t444r   otherc                     t          |t                    st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S rT   )rM   r   NotImplementedrI   rJ   rK   r   r_   s     r   __eq__zDSAParameterNumbers.__eq__   sF    %!455 	"!!v LTVuw%6L46UW;LLr   c                 .    d                     |           S )Nz9<DSAParameterNumbers(p={self.p}, q={self.q}, g={self.g})>r   r,   r   s    r   __repr__zDSAParameterNumbers.__repr__   s    !6t6,,	
r   rT   )r   r   r   r2   rR   r1   rI   rJ   rK   r4   Anyr   r#   objectboolrc   strrf   r   r   r   r   r   ~   s       # # #     3    X 3    X 3    X5 5&* 5 5 5 5 5MF Mt M M M M
# 
 
 
 
 
 
r   r   c                       e Zd ZdedefdZedefd            Zedefd            Zdde	j
        defd	Zd
edefdZdefdZdS )r?   yr   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.)rM   r2   rN   r   _y_parameter_numbers)r   rl   r   s      r   rR   zDSAPublicNumbers.__init__   sd    !S!! 	OMNNN+-@AA 	K   "3r   r   c                     | j         S rT   )rn   r   s    r   rl   zDSAPublicNumbers.y   rU   r   c                     | j         S rT   )ro   r   s    r   r   z"DSAPublicNumbers.parameter_numbers   s    &&r   NrX   c                 8    ddl m} |                    |           S rZ   )r[   rX   load_dsa_public_numbersr]   s      r   r!   zDSAPublicNumbers.public_key   s6    	
 	
 	
 	
 	
 	
 ++D111r   r_   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S rT   )rM   r?   ra   rl   r   rb   s     r   rc   zDSAPublicNumbers.__eq__   sB    %!122 	"!! Feg B&%*AA	
r   c                 .    d                     |           S )NzJ<DSAPublicNumbers(y={self.y}, parameter_numbers={self.parameter_numbers})>r   re   r   s    r   rf   zDSAPublicNumbers.__repr__   s    ;;A6t6;L;L	
r   rT   )r   r   r   r2   r   rR   r1   rl   r   r4   rg   r   r!   rh   ri   rc   rj   rf   r   r   r   r?   r?      s        
4# 
42E 
4 
4 
4 
4 3    X '#6 ' ' ' X'2 2&* 2 2 2 2 2
F 
t 
 
 
 

# 
 
 
 
 
 
r   r?   c                       e Zd ZdedefdZedefd            Zedefd            Zdde	j
        defd	Zd
edefdZdS )r(   xrA   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.)rM   r2   rN   r?   _public_numbers_x)r   rw   rA   s      r   rR   zDSAPrivateNumbers.__init__   sa    !S!! 	PNOOO.*:;; 	E    .r   r   c                     | j         S rT   )rz   r   s    r   rw   zDSAPrivateNumbers.x   rU   r   c                     | j         S rT   )ry   r   s    r   rA   z DSAPrivateNumbers.public_numbers   s    ##r   NrX   c                 8    ddl m} |                    |           S rZ   )r[   rX   load_dsa_private_numbersr]   s      r   private_keyzDSAPrivateNumbers.private_key   s6    	
 	
 	
 	
 	
 	
 ,,T222r   r_   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S rT   )rM   r(   ra   rw   rA   rb   s     r   rc   zDSAPrivateNumbers.__eq__   s>    %!233 	"!! FegM$"59M"M	
r   rT   )r   r   r   r2   r?   rR   r1   rw   rA   r4   rg   r	   r   rh   ri   rc   r   r   r   r(   r(      s        	# 	/? 	 	 	 	 3    X $ 0 $ $ $ X$3 36: 3 3 3 3 3
F 
t 
 
 
 
 
 
r   r(   r   rX   r   c                 8    ddl m} |                    |           S rZ   )r[   rX   generate_dsa_parametersr   rX   r^   s      r   generate_parametersr      s+     MLLLLL''111r   c                 8    ddl m} |                    |           S rZ   )r[   rX   'generate_dsa_private_key_and_parametersr   s      r   r   r     s+     MLLLLL77AAAr   r#   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.)rI   
bit_length
ValueErrorrJ   rK   )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).)
rA   r   r   rw   rJ   r   rl   powrK   rI   )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   rT   )r   r4   cryptography.hazmat.primitivesr   r   )cryptography.hazmat.primitives.asymmetricr   r6   ABCMetar   DSAParametersWithNumbersr	   DSAPrivateKeyWithSerializationr   DSAPublicKeyWithSerializationr   r?   r(   r2   rg   r   r   r   r   r   r   r   <module>r      s3   


  A A A A A A A A I I I I I I    ck     ) - - - - -ck - - - -` "/ ' ' ' ' 'S[ ' ' ' 'T !- ,
 ,
 ,
 ,
 ,
 ,
 ,
 ,
^)
 )
 )
 )
 )
 )
 )
 )
X!
 !
 !
 !
 !
 !
 !
 !
J *.2 22"J22 2 2 2 *.B BB"JBB B B B	:&9 	:d 	: 	: 	: 	:=(9 =d = = = = = =r   