o
    Ç `  ã                   @   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 
ej¡G dd„ deƒƒZe 
ej¡G dd„ deƒƒZe 
ej¡G d	d
„ d
eƒƒZe 
ej¡G dd„ deƒƒZe 
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                   @   ó   e Zd Zejdd„ ƒZdS )ÚDSAParametersc                 C   ó   dS )z8
        Generates and returns a DSAPrivateKey.
        N© ©Úselfr
   r
   úƒhome/ych/rk3568/buildroot/output/rockchip_rk3568/host/lib/python3.10/site-packages/cryptography/hazmat/primitives/asymmetric/dsa.pyÚgenerate_private_key   ó    z"DSAParameters.generate_private_keyN)Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractmethodr   r
   r
   r
   r   r      ó    r   c                   @   r   )ÚDSAParametersWithNumbersc                 C   r	   )z0
        Returns a DSAParameterNumbers.
        Nr
   r   r
   r
   r   Úparameter_numbers   r   z*DSAParametersWithNumbers.parameter_numbersN)r   r   r   r   r   r   r
   r
   r
   r   r      r   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   r	   ©z6
        The bit length of the prime modulus.
        Nr
   r   r
   r
   r   Úkey_size#   r   zDSAPrivateKey.key_sizec                 C   r	   )zD
        The DSAPublicKey associated with this private key.
        Nr
   r   r
   r
   r   Ú
public_key)   r   zDSAPrivateKey.public_keyc                 C   r	   )zL
        The DSAParameters object associated with this private key.
        Nr
   r   r
   r
   r   Ú
parameters/   r   zDSAPrivateKey.parametersc                 C   r	   )zN
        Returns an AsymmetricSignatureContext used for signing data.
        Nr
   )r   Úsignature_algorithmr
   r
   r   Úsigner5   r   zDSAPrivateKey.signerc                 C   r	   )z 
        Signs the data
        Nr
   )r   ÚdataÚ	algorithmr
   r
   r   Úsign;   r   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   r	   )z.
        Returns a DSAPrivateNumbers.
        Nr
   r   r
   r
   r   Úprivate_numbersD   r   z.DSAPrivateKeyWithSerialization.private_numbersc                 C   r	   ©z6
        Returns the key serialized as bytes.
        Nr
   )r   ÚencodingÚformatZencryption_algorithmr
   r
   r   Úprivate_bytesJ   r   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   r	   r   r
   r   r
   r
   r   r   S   r   zDSAPublicKey.key_sizec                 C   r	   )zK
        The DSAParameters object associated with this public key.
        Nr
   r   r
   r
   r   r   Y   r   zDSAPublicKey.parametersc                 C   r	   )zQ
        Returns an AsymmetricVerificationContext used for signing data.
        Nr
   )r   Ú	signaturer   r
   r
   r   Úverifier_   r   zDSAPublicKey.verifierc                 C   r	   )z-
        Returns a DSAPublicNumbers.
        Nr
   r   r
   r
   r   Úpublic_numberse   r   zDSAPublicKey.public_numbersc                 C   r	   r%   r
   )r   r&   r'   r
   r
   r   Úpublic_bytesk   r   zDSAPublicKey.public_bytesc                 C   r	   )z5
        Verifies the signature of the data.
        Nr
   )r   r*   r   r    r
   r
   r   Úverifyq   r   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   ó   t |ƒ}| | ¡S ©N)r   Zgenerate_dsa_parameters©r   Úbackendr
   r
   r   Úgenerate_parameters{   ó   
r3   c                 C   r/   r0   )r   Z'generate_dsa_private_key_and_parametersr1   r
   r
   r   r   €   r4   r   c                 C   sX   | j  ¡ dvrtdƒ‚| j ¡ dvrtdƒ‚d| j  k r%| j k s*tdƒ‚ 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.)ÚpÚ
bit_lengthÚ
ValueErrorÚqÚg)r   r
   r
   r   Ú_check_dsa_parameters…   s   ÿÿÿr>   c                 C   sT   | j j}t|ƒ | jdks| j|jkrtdƒ‚| j jt|j| j|j	ƒkr(tdƒ‚d S )Nr   zx must be > 0 and < q.z y must be equal to (g ** x % p).)
r,   r   r>   Úxr<   r;   ÚyÚpowr=   r9   )Únumbersr   r
   r
   r   Ú_check_dsa_private_numbers‘   s   ÿrC   c                   @   sT   e Zd Zdd„ Ze d¡Ze d¡Ze d¡Zddd„Z	d	d
„ Z
dd„ Zdd„ ZdS )ÚDSAParameterNumbersc                 C   sB   t |tjƒrt |tjƒrt |tjƒstdƒ‚|| _|| _|| _d S )Nz;DSAParameterNumbers p, q, and g arguments must be integers.)Ú
isinstanceÚsixÚinteger_typesÚ	TypeErrorÚ_pÚ_qÚ_g)r   r9   r<   r=   r
   r
   r   Ú__init__œ   s   
ÿ
þ
ýÿ
zDSAParameterNumbers.__init__rI   rJ   rK   Nc                 C   r/   r0   )r   Zload_dsa_parameter_numbers©r   r2   r
   r
   r   r   ®   r4   zDSAParameterNumbers.parametersc                 C   s2   t |tƒstS | j|jko| j|jko| j|jkS r0   )rE   rD   ÚNotImplementedr9   r<   r=   ©r   Úotherr
   r
   r   Ú__eq__²   s   
$zDSAParameterNumbers.__eq__c                 C   ó
   | |k S r0   r
   rO   r
   r
   r   Ú__ne__¸   ó   
zDSAParameterNumbers.__ne__c                 C   ó   dj | dS )Nz9<DSAParameterNumbers(p={self.p}, q={self.q}, g={self.g})>r   ©r'   r   r
   r
   r   Ú__repr__»   ó   ÿÿzDSAParameterNumbers.__repr__r0   )r   r   r   rL   r   Úread_only_propertyr9   r<   r=   r   rQ   rS   rW   r
   r
   r
   r   rD   ›   s    



rD   c                   @   sJ   e Zd Zdd„ Ze d¡Ze 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.)rE   rF   rG   rH   rD   Ú_yÚ_parameter_numbers)r   r@   r   r
   r
   r   rL   Ã   s   
ÿ
zDSAPublicNumbers.__init__r[   r\   Nc                 C   r/   r0   )r   Zload_dsa_public_numbersrM   r
   r
   r   r   Ò   r4   zDSAPublicNumbers.public_keyc                 C   ó&   t |tƒstS | j|jko| j|jkS r0   )rE   rZ   rN   r@   r   rO   r
   r
   r   rQ   Ö   s
   

þzDSAPublicNumbers.__eq__c                 C   rR   r0   r
   rO   r
   r
   r   rS   ß   rT   zDSAPublicNumbers.__ne__c                 C   rU   )NzJ<DSAPublicNumbers(y={self.y}, parameter_numbers={self.parameter_numbers})>r   rV   r   r
   r
   r   rW   â   rX   zDSAPublicNumbers.__repr__r0   )r   r   r   rL   r   rY   r@   r   r   rQ   rS   rW   r
   r
   r
   r   rZ   Â   s    


	rZ   c                   @   sB   e Zd Zdd„ Ze d¡Ze 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.)rE   rF   rG   rH   rZ   Ú_public_numbersÚ_x)r   r?   r,   r
   r
   r   rL   ê   s   
ÿ
zDSAPrivateNumbers.__init__r`   r_   Nc                 C   r/   r0   )r   Zload_dsa_private_numbersrM   r
   r
   r   Úprivate_keyø   r4   zDSAPrivateNumbers.private_keyc                 C   r]   r0   )rE   r^   rN   r?   r,   rO   r
   r
   r   rQ   ü   s   
ÿzDSAPrivateNumbers.__eq__c                 C   rR   r0   r
   rO   r
   r
   r   rS     rT   zDSAPrivateNumbers.__ne__r0   )r   r   r   rL   r   rY   r?   r,   ra   rQ   rS   r
   r
   r
   r   r^   é   s    


r^   r0   )Ú
__future__r   r   r   r   rF   Úcryptographyr   Zcryptography.hazmat.backendsr   Zadd_metaclassÚABCMetaÚobjectr   r   r   r#   r)   ZDSAPublicKeyWithSerializationr3   r   r>   rC   rD   rZ   r^   r
   r
   r
   r   Ú<module>   s.   



 
&


''