
     h"              
          d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	 d dlm
Z e j        rd dlmZ dd	d
ddedefdZdd	dddededdf
dZ G d de	j                  Z G d de	j                  Z G d de	j                  ZdS )    N)InvalidSignature)_calculate_digest_and_algorithm)hashesserialization)dsa)utils)Backendbackendr	   private_key_DSAPrivateKeydatareturnc                    | j                             |j                  }| j                            d|          }| j                            d          }| j                             d|t          |          |||j                  }|                     |dk               |                     |d                    | j                            |          d |d                  S )Nzunsigned char[]zunsigned int *r      )	_libDSA_size
_dsa_cdata_ffinewDSA_signlenopenssl_assertbuffer)r
   r   r   sig_buf_lensig_bufbuflenress          d/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/cryptography/hazmat/backends/openssl/dsa.py_dsa_sig_signr      s     ,''(>??Kl0+>>G\.//F ,

	4TGV[-C C 3!8$$$6!9%%%<w''&)44    
public_key_DSAPublicKey	signaturec           	          | j                             d|t          |          |t          |          |j                  }|dk    r|                                  t
          d S )Nr   r   )r   
DSA_verifyr   r   _consume_errorsr   )r
   r!   r#   r   r   s        r   _dsa_sig_verifyr'   &   sa     ,
!
!	4TIs9~~z7L C axx!!! xr    c                   B    e Zd ZddZdej        fdZdej        fdZdS )	_DSAParametersr
   r	   c                 "    || _         || _        d S N)_backendr   )selfr
   	dsa_cdatas      r   __init__z_DSAParameters.__init__8   s    #r    r   c                    | j         j                            d          }| j         j                            d          }| j         j                            d          }| j         j                            | j        |||           | j                             |d         | j         j        j        k               | j                             |d         | j         j        j        k               | j                             |d         | j         j        j        k               t          j	        | j         
                    |d                   | j         
                    |d                   | j         
                    |d                             S )N	BIGNUM **r   pqg)r,   r   r   r   DSA_get0_pqgr   r   NULLr   DSAParameterNumbers
_bn_to_int)r-   r3   r4   r5   s       r   parameter_numbersz _DSAParameters.parameter_numbers<   s?   M"";//M"";//M"";//''AqAAA$$QqTT]-?-D%DEEE$$QqTT]-?-D%DEEE$$QqTT]-?-D%DEEE&m&&qt,,m&&qt,,m&&qt,,
 
 
 	
r    c                 6    | j                             |           S r+   )r,   generate_dsa_private_keyr-   s    r   generate_private_keyz#_DSAParameters.generate_private_keyJ   s    }55d;;;r    Nr
   r	   )	__name__
__module____qualname__r/   r   r8   r:   DSAPrivateKeyr>    r    r   r)   r)   7   sd        $ $ $ $
3#: 
 
 
 
<c&7 < < < < < <r    r)   c                       e Zd ZU eed<   ddZedefd            Zdej	        fdZ
dej        fdZdej        fd	Zd
ej        dej        dej        defdZdedej        ej        ej        f         defdZdS )r   	_key_sizer
   r	   c                    || _         || _        || _        | j         j                            d          }| j         j                            ||| j         j        j        | j         j        j                   | j                             |d         |j        j        k               | j         j        	                    |d                   | _
        d S Nr1   r   r,   r   	_evp_pkeyr   r   r   r6   r7   r   BN_num_bitsrF   r-   r
   r.   evp_pkeyr3   s        r   r/   z_DSAPrivateKey.__init__Q   s    #!M"";//''q$-,14=3E3J	
 	
 	
 	$$QqTW\->%>???+77!==r    r   c                     | j         S r+   rF   r=   s    r   key_sizez_DSAPrivateKey.key_size]   
    ~r    c                 z   | j         j                            d          }| j         j                            d          }| j         j                            d          }| j         j                            d          }| j         j                            d          }| j         j                            | j        |||           | j                             |d         | j         j        j        k               | j                             |d         | j         j        j        k               | j                             |d         | j         j        j        k               | j         j                            | j        ||           | j                             |d         | j         j        j        k               | j                             |d         | j         j        j        k               t          j
        t          j        t          j        | j                             |d                   | j                             |d                   | j                             |d                             | j                             |d                             | j                             |d                             S )Nr1   r   r2   r:   y)public_numbersx)r,   r   r   r   r6   r   r   r7   DSA_get0_keyr   DSAPrivateNumbersDSAPublicNumbersr8   r9   )r-   r3   r4   r5   pub_keypriv_keys         r   private_numbersz_DSAPrivateKey.private_numbersa   s8   M"";//M"";//M"";//-$((55=%))+66''AqAAA$$QqTT]-?-D%DEEE$$QqTT]-?-D%DEEE$$QqTT]-?-D%DEEE''(KKK$$WQZ4=3E3J%JKKK$$Xa[DM4F4K%KLLL$/"%"9m..qt44m..qt44m..qt44# # #
 -**71:66   m&&x{33

 

 

 
	
r    c                 V   | j         j                            | j                  }| j                             || j         j        j        k               | j         j                            || j         j        j                  }| j         j        	                    d          }| j         j        
                    | j        || j         j        j                   | j                             |d         | j         j        j        k               | j         j                            |d                   }| j         j                            ||| j         j        j                  }| j                             |dk               | j                             |          }t          | j         ||          S )Nr1   r   r   )r,   r   DSAparams_dupr   r   r   r7   gcDSA_freer   rW   BN_dupDSA_set0_key_dsa_cdata_to_evp_pkeyr"   )r-   r.   rZ   pub_key_dupr   rM   s         r   r!   z_DSAPrivateKey.public_keyz   sa   M&44T_EE	$$Y$-2D2I%IJJJM&))t})2
 
	 -$((55''OWdm&8&=	
 	
 	
 	$$WQZ4=3E3J%JKKKm(//
;;m --{DM$6$;
 
 	$$SAX...=77	BBT]Ix@@@r    c                 ,   | j         j                            | j                  }| j                             || j         j        j        k               | j         j                            || j         j        j                  }t          | j         |          S r+   )
r,   r   r^   r   r   r   r7   r_   r`   r)   r-   r.   s     r   
parametersz_DSAPrivateKey.parameters   sz    M&44T_EE	$$Y$-2D2I%IJJJM&))t})2
 
	 dmY777r    encodingformatencryption_algorithmc                 T    | j                             |||| | j        | j                  S r+   )r,   _private_key_bytesrJ   r   )r-   rh   ri   rj   s       r   private_bytesz_DSAPrivateKey.private_bytes   s4     }// NO
 
 	
r    r   	algorithmc                 T    t          ||          \  }}t          | j        | |          S r+   )r   r   r,   )r-   r   rn   _s       r   signz_DSAPrivateKey.sign   s+    
 2$	BBaT]D$777r    Nr?   )r@   rA   rB   int__annotations__r/   propertyrP   r   rX   r\   DSAPublicKeyr!   DSAParametersrg   r   EncodingPrivateFormatKeySerializationEncryptionbytesrm   typingUnion
asym_utils	Prehashedr   HashAlgorithmrq   rD   r    r   r   r   N   s>        NNN
> 
> 
> 
> #    X
!6 
 
 
 
2AC, A A A A&8C- 8 8 8 8
(
 +
 ,F	

 

 
 
 
88 <
 4f6J JK8 
	8 8 8 8 8 8r    c                       e Zd ZU eed<   ddZedefd            Zdej	        fdZ
dej        fdZd	ej        d
ej        defdZdededej        ej        ej        f         ddfdZdS )r"   rF   r
   r	   c                    || _         || _        || _        | j         j                            d          }| j         j                            ||| j         j        j        | j         j        j                   | j                             |d         |j        j        k               | j         j        	                    |d                   | _
        d S rH   rI   rL   s        r   r/   z_DSAPublicKey.__init__   s    #!M"";//''q$-,14=3E3J	
 	
 	
 	$$QqTW\->%>???+77!==r    r   c                     | j         S r+   rO   r=   s    r   rP   z_DSAPublicKey.key_size   rQ   r    c           
         | j         j                            d          }| j         j                            d          }| j         j                            d          }| j         j                            d          }| j         j                            | j        |||           | j                             |d         | j         j        j        k               | j                             |d         | j         j        j        k               | j                             |d         | j         j        j        k               | j         j                            | j        || j         j        j                   | j                             |d         | j         j        j        k               t          j
        t          j        | j                             |d                   | j                             |d                   | j                             |d                             | j                             |d                             S )Nr1   r   r2   rS   )r,   r   r   r   r6   r   r   r7   rW   r   rY   r8   r9   )r-   r3   r4   r5   rZ   s        r   rU   z_DSAPublicKey.public_numbers   s   M"";//M"";//M"";//-$((55''AqAAA$$QqTT]-?-D%DEEE$$QqTT]-?-D%DEEE$$QqTT]-?-D%DEEE''OWdm&8&=	
 	
 	
 	$$WQZ4=3E3J%JKKK#!5-**1Q400-**1Q400-**1Q400  
 m&&wqz22
 
 
 	
r    c                     | j         j                            | j                  }| j         j                            || j         j        j                  }t          | j         |          S r+   )r,   r   r^   r   r   r_   r`   r)   rf   s     r   rg   z_DSAPublicKey.parameters   sW    M&44T_EE	M&))t})2
 
	 dmY777r    rh   ri   c                 H    | j                             ||| | j        d           S r+   )r,   _public_key_bytesrJ   )r-   rh   ri   s      r   public_bytesz_DSAPublicKey.public_bytes   s+    
 }..fdDND
 
 	
r    r#   r   rn   Nc                 V    t          ||          \  }}t          | j        | ||          S r+   )r   r'   r,   )r-   r#   r   rn   rp   s        r   verifyz_DSAPublicKey.verify   s-     2$	BBat}dItDDDr    r?   )r@   rA   rB   rr   rs   r/   rt   rP   r   rY   rU   rv   rg   r   rw   PublicFormatrz   r   r{   r|   r}   r~   r   r   r   rD   r    r   r"   r"      s"        NNN	> 	> 	> 	> #    X
 4 
 
 
 
,8C- 8 8 8 8
(
 *
 
	
 
 
 
EE E <
 4f6J JK	E
 
E E E E E Er    )r{   cryptography.exceptionsr   *cryptography.hazmat.backends.openssl.utilsr   cryptography.hazmat.primitivesr   r   )cryptography.hazmat.primitives.asymmetricr   r   r}   TYPE_CHECKING,cryptography.hazmat.backends.openssl.backendr	   rz   r   r'   rv   r)   rC   r   ru   r"   rD   r    r   <module>r      s    4 4 4 4 4 4      A @ @ @ @ @ @ @ 9 9 9 9 9 9 I I I I I I	 EDDDDDD55%55=B5
5 5 5 5$  	
 
   "< < < < <S& < < <.\8 \8 \8 \8 \8S& \8 \8 \8~?E ?E ?E ?E ?EC$ ?E ?E ?E ?E ?Er    