o
    ™¨Êhë  ã                   @   s  d dl mZmZmZ d dlZd dlZd dlmZ e ej	¡G dd„ de
ƒƒZe ej	¡G dd„ deƒƒZe ej	¡G dd	„ d	e
ƒƒZe ej	¡G d
d„ deƒƒZe ej	¡G dd„ de
ƒƒZeZdd„ Zdd„ Zdd„ Zdd„ ZG dd„ de
ƒZG dd„ de
ƒZG dd„ de
ƒZdS )é    )Úabsolute_importÚdivisionÚprint_functionN)Úutilsc                   @   ó   e Zd Zejdd„ ƒZdS )ÚDSAParametersc                 C   ó   dS )z8
        Generates and returns a DSAPrivateKey.
        N© ©Úselfr	   r	   ú_/var/www/html/env/lib/python3.10/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.pyÚgenerate_private_key   ó    z"DSAParameters.generate_private_keyN)Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractmethodr   r	   r	   r	   r   r      ó    r   c                   @   r   )ÚDSAParametersWithNumbersc                 C   r   )z0
        Returns a DSAParameterNumbers.
        Nr	   r
   r	   r	   r   Úparameter_numbers   r   z*DSAParametersWithNumbers.parameter_numbersN)r   r   r   r   r   r   r	   r	   r	   r   r      r   r   c                   @   sR   e Z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 )ÚDSAPrivateKeyc                 C   r   ©z6
        The bit length of the prime modulus.
        Nr	   r
   r	   r	   r   Úkey_size"   r   zDSAPrivateKey.key_sizec                 C   r   )zD
        The DSAPublicKey associated with this private key.
        Nr	   r
   r	   r	   r   Ú
public_key(   r   zDSAPrivateKey.public_keyc                 C   r   )zL
        The DSAParameters object associated with this private key.
        Nr	   r
   r	   r	   r   Ú
parameters.   r   zDSAPrivateKey.parametersc                 C   r   )zN
        Returns an AsymmetricSignatureContext used for signing data.
        Nr	   )r   Úsignature_algorithmr	   r	   r   Úsigner4   r   zDSAPrivateKey.signerc                 C   r   )z 
        Signs the data
        Nr	   )r   ÚdataÚ	algorithmr	   r	   r   Úsign:   r   zDSAPrivateKey.signN)r   r   r   r   Úabstractpropertyr   r   r   r   r   r    r	   r	   r	   r   r       s    



r   c                   @   s(   e Zd Zejdd„ ƒZejdd„ ƒZdS )ÚDSAPrivateKeyWithSerializationc                 C   r   )z.
        Returns a DSAPrivateNumbers.
        Nr	   r
   r	   r	   r   Úprivate_numbersC   r   z.DSAPrivateKeyWithSerialization.private_numbersc                 C   r   ©z6
        Returns the key serialized as bytes.
        Nr	   )r   ÚencodingÚformatÚencryption_algorithmr	   r	   r   Úprivate_bytesI   r   z,DSAPrivateKeyWithSerialization.private_bytesN)r   r   r   r   r   r#   r(   r	   r	   r	   r   r"   A   s
    
r"   c                   @   s`   e Z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
ejdd„ ƒZdS )ÚDSAPublicKeyc                 C   r   r   r	   r
   r	   r	   r   r   R   r   zDSAPublicKey.key_sizec                 C   r   )zK
        The DSAParameters object associated with this public key.
        Nr	   r
   r	   r	   r   r   X   r   zDSAPublicKey.parametersc                 C   r   )zQ
        Returns an AsymmetricVerificationContext used for signing data.
        Nr	   )r   Ú	signaturer   r	   r	   r   Úverifier^   r   zDSAPublicKey.verifierc                 C   r   )z-
        Returns a DSAPublicNumbers.
        Nr	   r
   r	   r	   r   Úpublic_numbersd   r   zDSAPublicKey.public_numbersc                 C   r   r$   r	   )r   r%   r&   r	   r	   r   Úpublic_bytesj   r   zDSAPublicKey.public_bytesc                 C   r   )z5
        Verifies the signature of the data.
        Nr	   )r   r*   r   r   r	   r	   r   Úverifyp   r   zDSAPublicKey.verifyN)r   r   r   r   r!   r   r   r   r+   r,   r-   r.   r	   r	   r	   r   r)   P   s    




r)   c                 C   ó
   |  | ¡S ©N)Úgenerate_dsa_parameters©r   Úbackendr	   r	   r   Úgenerate_parametersz   ó   
r4   c                 C   r/   r0   )Ú'generate_dsa_private_key_and_parametersr2   r	   r	   r   r   ~   r5   r   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   z/p must be exactly 1024, 2048, or 3072 bits long)é    éà   é   z,q must be exactly 160, 224, or 256 bits longé   zg, p don't satisfy 1 < g < p.)ÚpÚ
bit_lengthÚ
ValueErrorÚqÚg)r   r	   r	   r   Ú_check_dsa_parameters‚   s   ÿÿr@   c                 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).)
r,   r   r@   Úxr>   r=   ÚyÚpowr?   r;   )Únumbersr   r	   r	   r   Ú_check_dsa_private_numbersŒ   s   ÿrE   c                   @   sR   e Zd Zdd„ Ze d¡Ze d¡Ze d¡Zdd„ Z	dd	„ Z
d
d„ Zdd„ ZdS )ÚDSAParameterNumbersc                 C   sB   t |tjƒrt |tjƒrt |tjƒstdƒ‚|| _|| _|| _d S )Nz;DSAParameterNumbers p, q, and g arguments must be integers.)Ú
isinstanceÚsixÚinteger_typesÚ	TypeErrorÚ_pÚ_qÚ_g)r   r;   r>   r?   r	   r	   r   Ú__init__—   s   
ÿ
þ
ýÿ
zDSAParameterNumbers.__init__rK   rL   rM   c                 C   r/   r0   )Úload_dsa_parameter_numbers©r   r3   r	   r	   r   r   ©   r5   zDSAParameterNumbers.parametersc                 C   s2   t |tƒstS | j|jko| j|jko| j|jkS r0   )rG   rF   ÚNotImplementedr;   r>   r?   ©r   Úotherr	   r	   r   Ú__eq__¬   s   
$zDSAParameterNumbers.__eq__c                 C   ó
   | |k S r0   r	   rR   r	   r	   r   Ú__ne__²   r5   zDSAParameterNumbers.__ne__c                 C   ó   dj | d�S )Nz9<DSAParameterNumbers(p={self.p}, q={self.q}, g={self.g})>r
   ©r&   r
   r	   r	   r   Ú__repr__µ   s   ÿÿzDSAParameterNumbers.__repr__N)r   r   r   rN   r   Úread_only_propertyr;   r>   r?   r   rT   rV   rY   r	   r	   r	   r   rF   –   s    


rF   c                   @   sH   e Zd Zdd„ Ze d¡Ze d¡Zdd„ Zdd„ Z	d	d
„ Z
dd„ ZdS )ÚDSAPublicNumbersc                 C   s6   t |tjƒ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.)rG   rH   rI   rJ   rF   Ú_yÚ_parameter_numbers)r   rB   r   r	   r	   r   rN   ¾   s   
ÿ
zDSAPublicNumbers.__init__r\   r]   c                 C   r/   r0   )Úload_dsa_public_numbersrP   r	   r	   r   r   Í   r5   zDSAPublicNumbers.public_keyc                 C   ó&   t |tƒstS | j|jko| j|jkS r0   )rG   r[   rQ   rB   r   rR   r	   r	   r   rT   Ð   s
   

þzDSAPublicNumbers.__eq__c                 C   rU   r0   r	   rR   r	   r	   r   rV   Ù   r5   zDSAPublicNumbers.__ne__c                 C   rW   )NzJ<DSAPublicNumbers(y={self.y}, parameter_numbers={self.parameter_numbers})>r
   rX   r
   r	   r	   r   rY   Ü   s   ÿÿzDSAPublicNumbers.__repr__N)r   r   r   rN   r   rZ   rB   r   r   rT   rV   rY   r	   r	   r	   r   r[   ½   s    

	r[   c                   @   s@   e Zd Zdd„ Ze d¡Ze d¡Zdd„ Zdd„ Z	d	d
„ Z
dS )ÚDSAPrivateNumbersc                 C   s6   t |tjƒs
tdƒ‚t |tƒstdƒ‚|| _|| _d S )Nz0DSAPrivateNumbers x argument must be an integer.z3public_numbers must be a DSAPublicNumbers instance.)rG   rH   rI   rJ   r[   Ú_public_numbersÚ_x)r   rA   r,   r	   r	   r   rN   ä   s   
ÿ
zDSAPrivateNumbers.__init__rb   ra   c                 C   r/   r0   )Úload_dsa_private_numbersrP   r	   r	   r   Úprivate_keyò   r5   zDSAPrivateNumbers.private_keyc                 C   r_   r0   )rG   r`   rQ   rA   r,   rR   r	   r	   r   rT   õ   s   
ÿzDSAPrivateNumbers.__eq__c                 C   rU   r0   r	   rR   r	   r	   r   rV   ý   r5   zDSAPrivateNumbers.__ne__N)r   r   r   rN   r   rZ   rA   r,   rd   rT   rV   r	   r	   r	   r   r`   ã   s    

r`   )Ú
__future__r   r   r   r   rH   Úcryptographyr   Úadd_metaclassÚABCMetaÚobjectr   r   r   r"   r)   ÚDSAPublicKeyWithSerializationr4   r   r@   rE   rF   r[   r`   r	   r	   r	   r   Ú<module>   s,   



 
&

'&