3
ãdeÍ  ã               @   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   úd/var/www/agendate/envp3/lib/python3.6/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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
   Úsign2   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_bytesB   s    zDSAPrivateKey.private_bytesN)r   r   r   Úpropertyr   r   Úintr   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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 )z6
        The bit length of the prime modulus.
        Nr   )r	   r   r   r
   r   R   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 )z6
        Returns the key serialized as bytes.
        Nr   )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	   r-   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#   r,   r$   r%   r&   r'   r   r(   r.   r   r   r   r
   r   Q   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   sB   t |tƒ s$t |tƒ s$t |tƒ r,tdƒ‚|| _|| _|| _d S )Nz;DSAParameterNumbers p, q, and g arguments must be integers.)Ú
isinstancer"   Ú	TypeErrorÚ_pÚ_qÚ_g)r	   r/   r0   r1   r   r   r
   Ú__init__   s    zDSAParameterNumbers.__init__)r   c             C   s   | j S )N)r4   )r	   r   r   r
   r/   �   s    zDSAParameterNumbers.pc             C   s   | j S )N)r5   )r	   r   r   r
   r0   ‘   s    zDSAParameterNumbers.qc             C   s   | j S )N)r6   )r	   r   r   r
   r1   •   s    zDSAParameterNumbers.gN)Úbackendr   c             C   s   ddl m} |j| ƒS )Nr   )r8   )Ú,cryptography.hazmat.backends.openssl.backendr8   Zload_dsa_parameter_numbers)r	   r8   Ú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 )N)r2   r   ÚNotImplementedr/   r0   r1   )r	   r;   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"   r7   r!   r/   r0   r1   r$   ÚAnyr   r   ÚobjectÚboolr=   Ústrr>   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.)r2   r"   r3   r   Ú_yÚ_parameter_numbers)r	   rC   r   r   r   r
   r7   ®   s    

zDSAPublicNumbers.__init__)r   c             C   s   | j S )N)rD   )r	   r   r   r
   rC   º   s    zDSAPublicNumbers.yc             C   s   | j S )N)rE   )r	   r   r   r
   r   ¾   s    z"DSAPublicNumbers.parameter_numbersN)r8   r   c             C   s   ddl m} |j| ƒS )Nr   )r8   )r9   r8   Zload_dsa_public_numbers)r	   r8   r:   r   r   r
   r   Â   s    zDSAPublicNumbers.public_key)r;   r   c             C   s&   t |tƒstS | j|jko$| j|jkS )N)r2   r*   r<   rC   r   )r	   r;   r   r   r
   r=   É   s    
zDSAPublicNumbers.__eq__c             C   s   dj | d�S )NzJ<DSAPublicNumbers(y={self.y}, parameter_numbers={self.parameter_numbers})>)r	   )r   )r	   r   r   r
   r>   Ò   s    zDSAPublicNumbers.__repr__)N)r   r   r   r"   r   r7   r!   rC   r   r$   r?   r   r   r@   rA   r=   rB   r>   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.)r2   r"   r3   r*   Ú_public_numbersÚ_x)r	   rF   r+   r   r   r
   r7   Ú   s    

zDSAPrivateNumbers.__init__)r   c             C   s   | j S )N)rH   )r	   r   r   r
   rF   å   s    zDSAPrivateNumbers.xc             C   s   | j S )N)rG   )r	   r   r   r
   r+   é   s    z DSAPrivateNumbers.public_numbersN)r8   r   c             C   s   ddl m} |j| ƒS )Nr   )r8   )r9   r8   Zload_dsa_private_numbers)r	   r8   r:   r   r   r
   Úprivate_keyí   s    zDSAPrivateNumbers.private_key)r;   r   c             C   s&   t |tƒstS | j|jko$| j|jkS )N)r2   r   r<   rF   r+   )r	   r;   r   r   r
   r=   ô   s    
zDSAPrivateNumbers.__eq__)N)r   r   r   r"   r*   r7   r!   rF   r+   r$   r?   r   rI   r@   rA   r=   r   r   r   r
   r   Ù   s   r   )r   r8   r   c             C   s   ddl m} |j| ƒS )Nr   )r8   )r9   r8   Zgenerate_dsa_parameters)r   r8   r:   r   r   r
   Úgenerate_parametersý   s    rJ   c             C   s   ddl m} |j| ƒS )Nr   )r8   )r9   r8   Z'generate_dsa_private_key_and_parameters)r   r8   r:   r   r   r
   r     s    r   )r   r   c             C   sT   | j jƒ dkrtdƒ‚| jjƒ dkr,td	ƒ‚d
| j  k oB| j k n  sPtdƒ‚d S )Né   é   é   é   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.)rK   rL   rM   rN   )rO   rP   rQ   )r/   Ú
bit_lengthÚ
ValueErrorr0   r1   )r   r   r   r
   Ú_check_dsa_parameters  s    rU   )Ú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   rU   rF   r0   rT   rC   Úpowr1   r/   )rV   r   r   r   r
   Ú_check_dsa_private_numbers  s    rX   )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"   r?   rJ   r   rU   rX   r   r   r   r
   Ú<module>   s$   0*/,%