£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
3
l_                 @   s$  d dl mZmZmZ d dlZd dlZd dlmZ d dlm	Z	 ej
ejG dd deZej
ejG dd deZej
ejG d	d
 d
eZej
ejG dd deZej
ejG dd deZeZdddZd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)utils)_get_backendc               @   s   e Zd Zejdd ZdS )DSAParametersc             C   s   dS )z8
        Generates and returns a DSAPrivateKey.
        N )selfr   r   /usr/lib64/python3.6/dsa.pygenerate_private_key   s    z"DSAParameters.generate_private_keyN)__name__
__module____qualname__abcabstractmethodr   r   r   r   r
   r      s   r   c               @   s   e Zd Zejdd ZdS )DSAParametersWithNumbersc             C   s   dS )z0
        Returns a DSAParameterNumbers.
        Nr   )r	   r   r   r
   parameter_numbers   s    z*DSAParametersWithNumbers.parameter_numbersN)r   r   r   r   r   r   r   r   r   r
   r      s   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   s   dS )z6
        The bit length of the prime modulus.
        Nr   )r	   r   r   r
   key_size#   s    zDSAPrivateKey.key_sizec             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.parametersc             C   s   dS )zN
        Returns an AsymmetricSignatureContext used for signing data.
        Nr   )r	   signature_algorithmr   r   r
   signer5   s    zDSAPrivateKey.signerc             C   s   dS )z 
        Signs the data
        Nr   )r	   data	algorithmr   r   r
   sign;   s    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   s   dS )z.
        Returns a DSAPrivateNumbers.
        Nr   )r	   r   r   r
   private_numbersD   s    z.DSAPrivateKeyWithSerialization.private_numbersc             C   s   dS )z6
        Returns the key serialized as bytes.
        Nr   )r	   encodingformatZencryption_algorithmr   r   r
   private_bytesJ   s    z,DSAPrivateKeyWithSerialization.private_bytesN)r   r   r   r   r   r   r!   r   r   r   r
   r   B   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   s   dS )z6
        The bit length of the prime modulus.
        Nr   )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.parametersc             C   s   dS )zQ
        Returns an AsymmetricVerificationContext used for signing data.
        Nr   )r	   	signaturer   r   r   r
   verifier_   s    zDSAPublicKey.verifierc             C   s   dS )z-
        Returns a DSAPublicNumbers.
        Nr   )r	   r   r   r
   public_numberse   s    zDSAPublicKey.public_numbersc             C   s   dS )z6
        Returns the key serialized as bytes.
        Nr   )r	   r   r    r   r   r
   public_bytesk   s    zDSAPublicKey.public_bytesc             C   s   dS )z5
        Verifies the signature of the data.
        Nr   )r	   r#   r   r   r   r   r
   verifyq   s    zDSAPublicKey.verifyN)r   r   r   r   r   r   r   r   r$   r%   r&   r'   r   r   r   r
   r"   Q   s   r"   c             C   s   t |}|j| S )N)r   Zgenerate_dsa_parameters)r   backendr   r   r
   generate_parameters{   s    r)   c             C   s   t |}|j| S )N)r   Z'generate_dsa_private_key_and_parameters)r   r(   r   r   r
   r      s    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.)r*   r+   r,   r-   )r.   r/   r0   )p
bit_length
ValueErrorqg)r   r   r   r
   _check_dsa_parameters   s    r7   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   r7   xr5   r4   ypowr6   r2   )Znumbersr   r   r   r
   _check_dsa_private_numbers   s    r;   c               @   sT   e Zd Zdd ZejdZejdZejdZdddZ	d	d
 Z
dd Zdd ZdS )DSAParameterNumbersc             C   sH   t |tj s*t |tj s*t |tj r2td|| _|| _|| _d S )Nz;DSAParameterNumbers p, q, and g arguments must be integers.)
isinstancesixinteger_types	TypeError_p_q_g)r	   r2   r5   r6   r   r   r
   __init__   s    zDSAParameterNumbers.__init__rA   rB   rC   Nc             C   s   t |}|j| S )N)r   Zload_dsa_parameter_numbers)r	   r(   r   r   r
   r      s    zDSAParameterNumbers.parametersc             C   s2   t |tstS | j|jko0| j|jko0| j|jkS )N)r=   r<   NotImplementedr2   r5   r6   )r	   otherr   r   r
   __eq__   s    
zDSAParameterNumbers.__eq__c             C   s
   | |k S )Nr   )r	   rF   r   r   r
   __ne__   s    zDSAParameterNumbers.__ne__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   rD   r   read_only_propertyr2   r5   r6   r   rG   rH   rI   r   r   r   r
   r<      s   



r<   c               @   sJ   e Zd Zdd ZejdZejdZd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.)r=   r>   r?   r@   r<   _y_parameter_numbers)r	   r9   r   r   r   r
   rD      s    
zDSAPublicNumbers.__init__rL   rM   Nc             C   s   t |}|j| S )N)r   Zload_dsa_public_numbers)r	   r(   r   r   r
   r      s    zDSAPublicNumbers.public_keyc             C   s&   t |tstS | j|jko$| j|jkS )N)r=   rK   rE   r9   r   )r	   rF   r   r   r
   rG      s    
zDSAPublicNumbers.__eq__c             C   s
   | |k S )Nr   )r	   rF   r   r   r
   rH      s    zDSAPublicNumbers.__ne__c             C   s   dj | dS )NzJ<DSAPublicNumbers(y={self.y}, parameter_numbers={self.parameter_numbers})>)r	   )r    )r	   r   r   r
   rI      s    zDSAPublicNumbers.__repr__)N)r   r   r   rD   r   rJ   r9   r   r   rG   rH   rI   r   r   r   r
   rK      s   


	rK   c               @   sB   e Zd Zdd ZejdZejdZd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.)r=   r>   r?   r@   rK   _public_numbers_x)r	   r8   r%   r   r   r
   rD      s    
zDSAPrivateNumbers.__init__rP   rO   Nc             C   s   t |}|j| S )N)r   Zload_dsa_private_numbers)r	   r(   r   r   r
   private_key   s    zDSAPrivateNumbers.private_keyc             C   s&   t |tstS | j|jko$| j|jkS )N)r=   rN   rE   r8   r%   )r	   rF   r   r   r
   rG      s    
zDSAPrivateNumbers.__eq__c             C   s
   | |k S )Nr   )r	   rF   r   r   r
   rH     s    zDSAPrivateNumbers.__ne__)N)r   r   r   rD   r   rJ   r8   r%   rQ   rG   rH   r   r   r   r
   rN      s   


rN   )N)N)Z
__future__r   r   r   r   r>   Zcryptographyr   Zcryptography.hazmat.backendsr   Zadd_metaclassABCMetaobjectr   r   r   r   r"   ZDSAPublicKeyWithSerializationr)   r   r7   r;   r<   rK   rN   r   r   r   r
   <module>   s,    &


''