U
    ¤€lj‚  ã                   @  s  d dl mZ d dlZd dlZd dlmZ d dlmZm	Z	 d dl
mZ d dlmZ G dd„ dejd	�ZeZe ejj¡ G d
d„ dejd	�ZeZe ejj¡ G dd„ dejd	�ZeZe ejj¡ ejjZejjZejjZdddddœdd„Zdddddœdd„ZdS )é    )ÚannotationsN)Úopenssl)Ú_serializationÚhashes)Úutils)ÚBufferc                   @  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   úQ/tmp/pip-unpacked-wheel-f0p8pgmk/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ddœdd„ƒƒZejddœdd„ƒZejddœd	d
„ƒZejddddœdd„ƒZ	ejddœdd„ƒZ
ejdddddœdd„ƒZejd dœdd„ƒZejdd dœdd„ƒZd S )!r	   Úintr
   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_keyr   c                 C  s   dS )zL
        The DSAParameters object associated with this private key.
        Nr   r   r   r   r   Ú
parameters0   s    zDSAPrivateKey.parametersr   ú+asym_utils.Prehashed | hashes.HashAlgorithmÚbytes)ÚdataÚ	algorithmr   c                 C  s   dS )z 
        Signs the data
        Nr   )r   r!   r"   r   r   r   Úsign6   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ú_serialization.Encodingz_serialization.PrivateFormatz)_serialization.KeySerializationEncryption)Ú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_bytesF   s    zDSAPrivateKey.private_bytesc                 C  s   dS ©z!
        Returns a copy.
        Nr   r   r   r   r   Ú__copy__Q   s    zDSAPrivateKey.__copy__Údict©Úmemor   c                 C  s   dS ©z&
        Returns a deep copy.
        Nr   ©r   r0   r   r   r   Ú__deepcopy__W   s    zDSAPrivateKey.__deepcopy__N)r   r   r   Úpropertyr   r   r   r   r   r#   r%   r+   r-   r3   r   r   r   r   r	   "   s"   	
r	   c                   @  s¾   e Zd Zeejddœdd„ƒƒZejddœdd„ƒZejddœd	d
„ƒZejddddœdd„ƒZ	ejdddddœdd„ƒZ
ejdddœdd„ƒZejd dœdd„ƒZejdd dœd d!„ƒZd"S )#r   r   r
   c                 C  s   dS r   r   r   r   r   r   r   c   s    zDSAPublicKey.key_sizer   c                 C  s   dS )zK
        The DSAParameters object associated with this public key.
        Nr   r   r   r   r   r   j   s    zDSAPublicKey.parametersÚDSAPublicNumbersc                 C  s   dS )z-
        Returns a DSAPublicNumbers.
        Nr   r   r   r   r   Úpublic_numbersp   s    zDSAPublicKey.public_numbersr&   z_serialization.PublicFormatr    )r'   r(   r   c                 C  s   dS r*   r   )r   r'   r(   r   r   r   Úpublic_bytesv   s    zDSAPublicKey.public_bytesr   r   ÚNone)Ú	signaturer!   r"   r   c                 C  s   dS )z5
        Verifies the signature of the data.
        Nr   )r   r9   r!   r"   r   r   r   Úverify€   s    zDSAPublicKey.verifyÚobjectÚbool)Úotherr   c                 C  s   dS )z"
        Checks equality.
        Nr   )r   r=   r   r   r   Ú__eq__‹   s    zDSAPublicKey.__eq__c                 C  s   dS r,   r   r   r   r   r   r-   ‘   s    zDSAPublicKey.__copy__r.   r/   c                 C  s   dS r1   r   r2   r   r   r   r3   —   s    zDSAPublicKey.__deepcopy__N)r   r   r   r4   r   r   r   r   r6   r7   r:   r>   r-   r3   r   r   r   r   r   b   s"   	
r   r   z
typing.Any)r   Úbackendr   c                 C  s   | dkrt dƒ‚tj | ¡S )N)i   i   i   i   z0Key size must be 1024, 2048, 3072, or 4096 bits.)Ú
ValueErrorÚrust_opensslÚdsaÚgenerate_parameters)r   r?   r   r   r   rC   ¦   s    rC   c                 C  s   t | ƒ}| ¡ S )N)rC   r   )r   r?   r   r   r   r   r   ¯   s    r   )N)N)Ú
__future__r   r   ÚtypingZ"cryptography.hazmat.bindings._rustr   rA   Zcryptography.hazmat.primitivesr   r   Z)cryptography.hazmat.primitives.asymmetricr   Z
asym_utilsZcryptography.utilsr   ÚABCMetar   ZDSAParametersWithNumbersÚregisterrB   r	   ZDSAPrivateKeyWithSerializationr   ZDSAPublicKeyWithSerializationr$   r5   r   rC   r   r   r   r   r   Ú<module>   s,   << ÿ
 ÿ