o
    eG                      @  s  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 dejdZeZeejj G d	d
 d
ejdZeZeejj G dd dejdZeZeejj G dd dZG dd dZG dd dZ	d#d$ddZ	d#d%ddZd&ddZd'd!d"ZdS )(    )annotationsN)openssl)_serializationhashes)utilsc                   @  s,   e Zd Zejd	ddZejd
ddZdS )DSAParametersreturnDSAPrivateKeyc                 C     dS )z8
        Generates and returns a DSAPrivateKey.
        N selfr   r   `/var/www/html/venv/lib/python3.10/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.pygenerate_private_key       z"DSAParameters.generate_private_keyDSAParameterNumbersc                 C  r
   )z0
        Returns a DSAParameterNumbers.
        Nr   r   r   r   r   parameter_numbers   r   zDSAParameters.parameter_numbersN)r   r	   r   r   )__name__
__module____qualname__abcabstractmethodr   r   r   r   r   r   r      s
    r   )	metaclassc                   @  sp   e Zd ZeejdddZejdddZejdd	d
Zejd ddZ	ejd!ddZ
ejd"ddZdS )#r	   r   intc                 C  r
   z6
        The bit length of the prime modulus.
        Nr   r   r   r   r   key_size"   r   zDSAPrivateKey.key_sizeDSAPublicKeyc                 C  r
   )zD
        The DSAPublicKey associated with this private key.
        Nr   r   r   r   r   
public_key)   r   zDSAPrivateKey.public_keyr   c                 C  r
   )zL
        The DSAParameters object associated with this private key.
        Nr   r   r   r   r   
parameters/   r   zDSAPrivateKey.parametersdatabytes	algorithm8typing.Union[asym_utils.Prehashed, hashes.HashAlgorithm]c                 C  r
   )z 
        Signs the data
        Nr   )r   r    r"   r   r   r   sign5   r   zDSAPrivateKey.signDSAPrivateNumbersc                 C  r
   )z.
        Returns a DSAPrivateNumbers.
        Nr   r   r   r   r   private_numbers?   r   zDSAPrivateKey.private_numbersencoding_serialization.Encodingformat_serialization.PrivateFormatencryption_algorithm)_serialization.KeySerializationEncryptionc                 C  r
   z6
        Returns the key serialized as bytes.
        Nr   )r   r'   r)   r+   r   r   r   private_bytesE   r   zDSAPrivateKey.private_bytesNr   r   )r   r   r   r   )r    r!   r"   r#   r   r!   )r   r%   )r'   r(   r)   r*   r+   r,   r   r!   )r   r   r   propertyr   r   r   r   r   r$   r&   r.   r   r   r   r   r	   !   s    	r	   c                   @  sp   e Zd ZeejdddZejd ddZejd!d	d
Zejd"ddZ	ejd#ddZ
ejd$ddZdS )%r   r   r   c                 C  r
   r   r   r   r   r   r   r   V   r   zDSAPublicKey.key_sizer   c                 C  r
   )zK
        The DSAParameters object associated with this public key.
        Nr   r   r   r   r   r   ]   r   zDSAPublicKey.parametersDSAPublicNumbersc                 C  r
   )z-
        Returns a DSAPublicNumbers.
        Nr   r   r   r   r   public_numbersc   r   zDSAPublicKey.public_numbersr'   r(   r)   _serialization.PublicFormatr!   c                 C  r
   r-   r   )r   r'   r)   r   r   r   public_bytesi   r   zDSAPublicKey.public_bytes	signaturer    r"   r#   Nonec                 C  r
   )z5
        Verifies the signature of the data.
        Nr   )r   r6   r    r"   r   r   r   verifys   r   zDSAPublicKey.verifyotherobjectboolc                 C  r
   )z"
        Checks equality.
        Nr   r   r9   r   r   r   __eq__~   r   zDSAPublicKey.__eq__Nr/   r0   r   r2   )r'   r(   r)   r4   r   r!   )r6   r!   r    r!   r"   r#   r   r7   r9   r:   r   r;   )r   r   r   r1   r   r   r   r   r3   r5   r8   r=   r   r   r   r   r   U   s    	
r   c                   @  s`   e Zd ZdddZeddd	Zedd
dZedddZddddZd ddZ	d!ddZ
dS )"r   pr   qgc                 C  s<   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   r@   rA   rB   r   r   r   __init__   s   
zDSAParameterNumbers.__init__r   c                 C     | j S N)rE   r   r   r   r   r@         zDSAParameterNumbers.pc                 C  rI   rJ   )rF   r   r   r   r   rA      rK   zDSAParameterNumbers.qc                 C  rI   rJ   )rG   r   r   r   r   rB      rK   zDSAParameterNumbers.gNbackend
typing.Anyr   c                 C     ddl m} || S Nr   )rL   ),cryptography.hazmat.backends.openssl.backendrL   load_dsa_parameter_numbersr   rL   osslr   r   r   r         
zDSAParameterNumbers.parametersr9   r:   r;   c                 C  s2   t |tstS | j|jko| j|jko| j|jkS rJ   )rC   r   NotImplementedr@   rA   rB   r<   r   r   r   r=      s   
$zDSAParameterNumbers.__eq__strc                 C     dj | dS )Nz9<DSAParameterNumbers(p={self.p}, q={self.q}, g={self.g})>r   r)   r   r   r   r   __repr__      zDSAParameterNumbers.__repr__)r@   r   rA   r   rB   r   r/   rJ   )rL   rM   r   r   r?   r   rV   )r   r   r   rH   r1   r@   rA   rB   r   r=   rY   r   r   r   r   r      s    

r   c                   @  sR   e Zd ZdddZeddd	Zedd
dZddddZdddZd ddZ	dS )!r2   yr   r   r   c                 C  s4   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.)rC   r   rD   r   _y_parameter_numbers)r   r\   r   r   r   r   rH      s   


zDSAPublicNumbers.__init__r   c                 C  rI   rJ   )r]   r   r   r   r   r\      rK   zDSAPublicNumbers.yc                 C  rI   rJ   )r^   r   r   r   r   r      rK   z"DSAPublicNumbers.parameter_numbersNrL   rM   r   c                 C  rN   rO   )rP   rL   load_dsa_public_numbersrR   r   r   r   r      rT   zDSAPublicNumbers.public_keyr9   r:   r;   c                 C  &   t |tstS | j|jko| j|jkS rJ   )rC   r2   rU   r\   r   r<   r   r   r   r=      s
   

zDSAPublicNumbers.__eq__rV   c                 C  rW   )NzJ<DSAPublicNumbers(y={self.y}, parameter_numbers={self.parameter_numbers})>r   rX   r   r   r   r   rY      rZ   zDSAPublicNumbers.__repr__)r\   r   r   r   r/   r   rJ   )rL   rM   r   r   r?   r[   )
r   r   r   rH   r1   r\   r   r   r=   rY   r   r   r   r   r2      s    

	r2   c                   @  sH   e Zd ZdddZeddd	Zedd
dZddddZdddZdS )r%   xr   r3   r2   c                 C  s4   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.)rC   r   rD   r2   _public_numbers_x)r   ra   r3   r   r   r   rH      s   


zDSAPrivateNumbers.__init__r   c                 C  rI   rJ   )rc   r   r   r   r   ra      rK   zDSAPrivateNumbers.xc                 C  rI   rJ   )rb   r   r   r   r   r3      rK   z DSAPrivateNumbers.public_numbersNrL   rM   r	   c                 C  rN   rO   )rP   rL   load_dsa_private_numbersrR   r   r   r   private_key   rT   zDSAPrivateNumbers.private_keyr9   r:   r;   c                 C  r`   rJ   )rC   r%   rU   ra   r3   r<   r   r   r   r=      s   
zDSAPrivateNumbers.__eq__)ra   r   r3   r2   r/   r>   rJ   )rL   rM   r   r	   r?   )	r   r   r   rH   r1   ra   r3   re   r=   r   r   r   r   r%      s    
r%   r   r   rL   rM   r   c                 C  rN   rO   )rP   rL   generate_dsa_parametersr   rL   rS   r   r   r   generate_parameters     
rh   c                 C  rN   rO   )rP   rL   'generate_dsa_private_key_and_parametersrg   r   r   r   r     ri   r   r   r7   c                 C  sX   | j  dvrtd| j dvrtdd| j  k r%| j k s*td 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.)r@   
bit_length
ValueErrorrA   rB   )r   r   r   r   _check_dsa_parameters  s   rq   numbersc                 C  sT   | 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).)
r3   r   rq   ra   rA   rp   r\   powrB   r@   )rr   r   r   r   r   _check_dsa_private_numbers$  s   rt   rJ   )r   r   rL   rM   r   r   )r   r   rL   rM   r   r	   )r   r   r   r7   )rr   r%   r   r7   )
__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   r2   r%   rh   r   rq   rt   r   r   r   r   <module>   s0   00/,%	
