U
    ÒZj¾  ã                   @   sî   d dl Z d dlZd dlmZmZ d dlmZ G dd„ de jd�Z	e	Z
G dd„ de jd�ZeZG d	d
„ d
e jd�ZeZG dd„ dƒZG dd„ dƒZG dd„ dƒZdeeje	dœdd„Zdeejedœdd„Zeddœdd„Zeddœdd„ZdS )é    N)Ú_serializationÚhashes)Úutilsc                   @   s4   e Zd Zejddœdd„ƒZejddœdd„ƒZdS )	ÚDSAParametersÚDSAPrivateKey©Úreturnc                 C   s   dS )z8
        Generates and returns a DSAPrivateKey.
        N© ©Úselfr	   r	   úp/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.pyÚgenerate_private_key   s    z"DSAParameters.generate_private_keyÚDSAParameterNumbersc                 C   s   dS )z0
        Returns a DSAParameterNumbers.
        Nr	   r
   r	   r	   r   Úparameter_numbers   s    zDSAParameters.parameter_numbersN)Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractmethodr   r   r	   r	   r	   r   r      s   r   )Ú	metaclassc                   @   s¢   e Zd Zejedœdd„ƒZejddœdd„ƒZeje	dœdd„ƒZ
ejeejejejf ed	œd
d„ƒZejddœdd„ƒZejejejejedœdd„ƒZdS )r   r   c                 C   s   dS ©z6
        The bit length of the prime modulus.
        Nr	   r
   r	   r	   r   Úkey_size!   s    zDSAPrivateKey.key_sizeÚDSAPublicKeyc                 C   s   dS )zD
        The DSAPublicKey associated with this private key.
        Nr	   r
   r	   r	   r   Ú
public_key'   s    zDSAPrivateKey.public_keyc                 C   s   dS )zL
        The DSAParameters object associated with this private key.
        Nr	   r
   r	   r	   r   Ú
parameters-   s    zDSAPrivateKey.parameters)ÚdataÚ	algorithmr   c                 C   s   dS )z 
        Signs the data
        Nr	   )r   r   r   r	   r	   r   Úsign3   s    zDSAPrivateKey.signÚDSAPrivateNumbersc                 C   s   dS )z.
        Returns a DSAPrivateNumbers.
        Nr	   r
   r	   r	   r   Úprivate_numbers=   s    zDSAPrivateKey.private_numbers)ÚencodingÚformatÚencryption_algorithmr   c                 C   s   dS ©z6
        Returns the key serialized as bytes.
        Nr	   )r   r    r!   r"   r	   r	   r   Úprivate_bytesC   s    zDSAPrivateKey.private_bytesN)r   r   r   r   ÚabstractpropertyÚintr   r   r   r   r   ÚbytesÚtypingÚUnionÚ
asym_utilsÚ	Prehashedr   ÚHashAlgorithmr   r   r   ÚEncodingZPrivateFormatZKeySerializationEncryptionr$   r	   r	   r	   r   r       s&   ü	ûr   c                   @   sŒ   e Zd Zejedœdd„ƒZejedœdd„ƒZ	ejddœdd„ƒZ
ejejejed	œd
d„ƒZejeeejejejf ddœdd„ƒZdS )r   r   c                 C   s   dS r   r	   r
   r	   r	   r   r   S   s    zDSAPublicKey.key_sizec                 C   s   dS )zK
        The DSAParameters object associated with this public key.
        Nr	   r
   r	   r	   r   r   Y   s    zDSAPublicKey.parametersÚDSAPublicNumbersc                 C   s   dS )z-
        Returns a DSAPublicNumbers.
        Nr	   r
   r	   r	   r   Úpublic_numbers_   s    zDSAPublicKey.public_numbers)r    r!   r   c                 C   s   dS r#   r	   )r   r    r!   r	   r	   r   Úpublic_bytese   s    zDSAPublicKey.public_bytesN)Ú	signaturer   r   r   c                 C   s   dS )z5
        Verifies the signature of the data.
        Nr	   )r   r1   r   r   r	   r	   r   Úverifyo   s    zDSAPublicKey.verify)r   r   r   r   r%   r&   r   r   r   r   r/   r   r-   ZPublicFormatr'   r0   r(   r)   r*   r+   r   r,   r2   r	   r	   r	   r   r   R   s"   ü	ûr   c                   @   s†   e Zd Zeeedœdd„Zeedœdd„ƒZeedœdd„ƒZeedœd	d
„ƒZde	j
edœdd„Zeedœdd„Zedœdd„ZdS )r   )ÚpÚ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   r3   r4   r5   r	   r	   r   Ú__init__   s    ÿþýÿzDSAParameterNumbers.__init__r   c                 C   s   | j S ©N)r8   r
   r	   r	   r   r3   �   s    zDSAParameterNumbers.pc                 C   s   | j S r<   )r9   r
   r	   r	   r   r4   ‘   s    zDSAParameterNumbers.qc                 C   s   | j S r<   )r:   r
   r	   r	   r   r5   •   s    zDSAParameterNumbers.gN©Úbackendr   c                 C   s   ddl m} | | ¡S ©Nr   )r>   )Ú,cryptography.hazmat.backends.openssl.backendr>   Zload_dsa_parameter_numbers©r   r>   Úosslr	   r	   r   r   ™   s    zDSAParameterNumbers.parameters©Úotherr   c                 C   s2   t |tƒstS | j|jko0| j|jko0| j|jkS r<   )r6   r   ÚNotImplementedr3   r4   r5   ©r   rD   r	   r	   r   Ú__eq__    s    
zDSAParameterNumbers.__eq__c                 C   s   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   r&   r;   Úpropertyr3   r4   r5   r(   ÚAnyr   r   ÚobjectÚboolrG   ÚstrrI   r	   r	   r	   r   r   ~   s   r   c                   @   sr   e Zd Zeedœdd„Zeedœdd„ƒZeedœdd„ƒZde	j
ed
œdd„Zeedœdd„Zedœdd„Zd	S )r.   )Úyr   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.)r6   r&   r7   r   Ú_yÚ_parameter_numbers)r   rO   r   r	   r	   r   r;   ®   s    

ÿzDSAPublicNumbers.__init__r   c                 C   s   | j S r<   )rP   r
   r	   r	   r   rO   º   s    zDSAPublicNumbers.yc                 C   s   | j S r<   )rQ   r
   r	   r	   r   r   ¾   s    z"DSAPublicNumbers.parameter_numbersNr=   c                 C   s   ddl m} | | ¡S r?   )r@   r>   Zload_dsa_public_numbersrA   r	   r	   r   r   Â   s    zDSAPublicNumbers.public_keyrC   c                 C   s&   t |tƒstS | j|jko$| j|jkS r<   )r6   r.   rE   rO   r   rF   r	   r	   r   rG   É   s
    

þzDSAPublicNumbers.__eq__c                 C   s   dj | d�S )NzJ<DSAPublicNumbers(y={self.y}, parameter_numbers={self.parameter_numbers})>r
   rH   r
   r	   r	   r   rI   Ò   s    ÿÿzDSAPublicNumbers.__repr__)N)r   r   r   r&   r   r;   rJ   rO   r   r(   rK   r   r   rL   rM   rG   rN   rI   r	   r	   r	   r   r.   ­   s   	r.   c                   @   sd   e Zd Zeedœdd„Zeedœdd„ƒZeedœdd„ƒZde	j
ed
œdd„Zeedœdd„Zd	S )r   )Úxr/   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.)r6   r&   r7   r.   Ú_public_numbersÚ_x)r   rR   r/   r	   r	   r   r;   Ú   s    

ÿzDSAPrivateNumbers.__init__r   c                 C   s   | j S r<   )rT   r
   r	   r	   r   rR   å   s    zDSAPrivateNumbers.xc                 C   s   | j S r<   )rS   r
   r	   r	   r   r/   é   s    z DSAPrivateNumbers.public_numbersNr=   c                 C   s   ddl m} | | ¡S r?   )r@   r>   Zload_dsa_private_numbersrA   r	   r	   r   Úprivate_keyí   s    zDSAPrivateNumbers.private_keyrC   c                 C   s&   t |tƒstS | j|jko$| j|jkS r<   )r6   r   rE   rR   r/   rF   r	   r	   r   rG   ô   s    
ÿzDSAPrivateNumbers.__eq__)N)r   r   r   r&   r.   r;   rJ   rR   r/   r(   rK   r   rU   rL   rM   rG   r	   r	   r	   r   r   Ù   s   r   )r   r>   r   c                 C   s   ddl m} | | ¡S r?   )r@   r>   Zgenerate_dsa_parameters©r   r>   rB   r	   r	   r   Úgenerate_parametersý   s    rW   c                 C   s   ddl m} | | ¡S r?   )r@   r>   Z'generate_dsa_private_key_and_parametersrV   r	   r	   r   r     s    r   )r   r   c                 C   sR   | j  ¡ dkrtdƒ‚| j ¡ dkr,tdƒ‚d| j  k rD| j k sNn 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.)r3   Ú
bit_lengthÚ
ValueErrorr4   r5   )r   r	   r	   r   Ú_check_dsa_parameters  s    ÿr^   )Únumbersr   c                 C   sT   | j j}t|ƒ | jdks&| j|jkr.tdƒ‚| j jt|j| j|j	ƒkrPtdƒ‚d S )Nr   zx must be > 0 and < q.z y must be equal to (g ** x % p).)
r/   r   r^   rR   r4   r]   rO   Úpowr5   r3   )r_   r   r	   r	   r   Ú_check_dsa_private_numbers  s    ra   )N)N)r   r(   Zcryptography.hazmat.primitivesr   r   Z)cryptography.hazmat.primitives.asymmetricr   r*   ÚABCMetar   ZDSAParametersWithNumbersr   ZDSAPrivateKeyWithSerializationr   ZDSAPublicKeyWithSerializationr   r.   r   r&   rK   rW   r   r^   ra   r	   r	   r	   r   Ú<module>   s4   /)/,% ÿ þ	 ÿ þ