<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</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,    &


''