Ë
    ýQµiG   ã                  ó.  — 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  G d„ dej                  ¬«      ZeZej!                  ej"                  j                  «        G d	„ d
ej                  ¬«      ZeZej!                  ej"                  j$                  «        G d„ dej                  ¬«      ZeZej!                  ej"                  j(                  «        G d„ d«      Z G d„ d«      Z G d„ d«      Z	 d	 	 	 	 	 dd„Z	 d	 	 	 	 	 dd„Zdd„Zdd„Zy)é    )ÚannotationsN)Úopenssl)Ú_serializationÚhashes)Úutilsc                  óX   — e Zd Zej                  dd„«       Zej                  dd„«       Zy)ÚDSAParametersc                 ó   — y)z8
        Generates and returns a DSAPrivateKey.
        N© ©Úselfs    úO/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/asymmetric/dsa.pyÚgenerate_private_keyz"DSAParameters.generate_private_key   ó   � ó    c                 ó   — y)z0
        Returns a DSAParameterNumbers.
        Nr   r   s    r   Úparameter_numberszDSAParameters.parameter_numbers   r   r   N)ÚreturnÚDSAPrivateKey©r   ÚDSAParameterNumbers)Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractmethodr   r   r   r   r   r	   r	      s4   „ Ø×Ñòó ðð
 	×Ñòó ñr   r	   )Ú	metaclassc                  ó  — e Zd Ze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y)r   c                 ó   — y©z6
        The bit length of the prime modulus.
        Nr   r   s    r   Úkey_sizezDSAPrivateKey.key_size"   r   r   c                 ó   — y)zD
        The DSAPublicKey associated with this private key.
        Nr   r   s    r   Ú
public_keyzDSAPrivateKey.public_key)   r   r   c                 ó   — y)zL
        The DSAParameters object associated with this private key.
        Nr   r   s    r   Ú
parameterszDSAPrivateKey.parameters/   r   r   c                 ó   — y)z 
        Signs the data
        Nr   )r   ÚdataÚ	algorithms      r   ÚsignzDSAPrivateKey.sign5   r   r   c                 ó   — y)z.
        Returns a DSAPrivateNumbers.
        Nr   r   s    r   Úprivate_numberszDSAPrivateKey.private_numbers?   r   r   c                 ó   — y©z6
        Returns the key serialized as bytes.
        Nr   )r   ÚencodingÚformatÚencryption_algorithms       r   Úprivate_byteszDSAPrivateKey.private_bytesE   r   r   N©r   Úint)r   ÚDSAPublicKey©r   r	   )r'   Úbytesr(   ú8typing.Union[asym_utils.Prehashed, hashes.HashAlgorithm]r   r6   )r   ÚDSAPrivateNumbers)r.   ú_serialization.Encodingr/   z_serialization.PrivateFormatr0   z)_serialization.KeySerializationEncryptionr   r6   )r   r   r   Úpropertyr   r   r!   r#   r%   r)   r+   r1   r   r   r   r   r   !   sè   „ ØØ×Ñòó ó ðð
 	×Ñòó ðð
 	×Ñòó ðð
 	×Ñðàðð Lðð 
ò	ó ðð 	×Ñòó ðð
 	×Ñðà)ðð -ðð Hð	ð
 
òó ñr   r   c                  ó  — e Zd Ze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y)r4   c                 ó   — yr    r   r   s    r   r!   zDSAPublicKey.key_sizeV   r   r   c                 ó   — y)zK
        The DSAParameters object associated with this public key.
        Nr   r   s    r   r%   zDSAPublicKey.parameters]   r   r   c                 ó   — y)z-
        Returns a DSAPublicNumbers.
        Nr   r   s    r   Úpublic_numberszDSAPublicKey.public_numbersc   r   r   c                 ó   — yr-   r   )r   r.   r/   s      r   Úpublic_byteszDSAPublicKey.public_bytesi   r   r   c                 ó   — y)z5
        Verifies the signature of the data.
        Nr   )r   Ú	signaturer'   r(   s       r   ÚverifyzDSAPublicKey.verifys   r   r   c                 ó   — y)z"
        Checks equality.
        Nr   ©r   Úothers     r   Ú__eq__zDSAPublicKey.__eq__~   r   r   Nr2   r5   ©r   ÚDSAPublicNumbers)r.   r9   r/   z_serialization.PublicFormatr   r6   )rC   r6   r'   r6   r(   r7   r   ÚNone©rG   Úobjectr   Úbool)r   r   r   r:   r   r   r!   r%   r?   rA   rD   rH   r   r   r   r4   r4   U   sç   „ ØØ×Ñòó ó ðð
 	×Ñòó ðð
 	×Ñòó ðð
 	×Ñðà)ðð ,ðð 
ò	ó ðð 	×Ñðàðð ðð Lð	ð
 
òó ðð 	×Ñòó ñr   r4   c                  ód   — e Zd Zd	d„Zed
d„«       Zed
d„«       Zed
d„«       Zddd„Zdd„Z	dd„Z
y)r   c                ó¤   — t        |t        «      r t        |t        «      rt        |t        «      st        d«      ‚|| _        || _        || _        y )Nz;DSAParameterNumbers p, q, and g arguments must be integers.)Ú
isinstancer3   Ú	TypeErrorÚ_pÚ_qÚ_g)r   ÚpÚqÚgs       r   Ú__init__zDSAParameterNumbers.__init__Š   sG   € ä˜1œcÔ"Ü˜a¤Ô%Ü˜a¤Ô%äØMóð ð ˆŒØˆŒØˆ�r   c                ó   — | j                   S ©N)rS   r   s    r   rV   zDSAParameterNumbers.p˜   ó   € à�w‰wˆr   c                ó   — | j                   S r[   )rT   r   s    r   rW   zDSAParameterNumbers.qœ   r\   r   c                ó   — | j                   S r[   )rU   r   s    r   rX   zDSAParameterNumbers.g    r\   r   Nc                ó0   — ddl m} |j                  | «      S ©Nr   )Úbackend)Ú,cryptography.hazmat.backends.openssl.backendra   Úload_dsa_parameter_numbers©r   ra   Úossls      r   r%   zDSAParameterNumbers.parameters¤   s   € õ	
ð ×.Ñ.¨tÓ4Ð4r   c                óÌ   — t        |t        «      st        S | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r[   )rQ   r   ÚNotImplementedrV   rW   rX   rF   s     r   rH   zDSAParameterNumbers.__eq__«   sJ   € Ü˜%Ô!4Ô5Ü!Ð!à�v‰v˜Ÿ™Ñ ÒL T§V¡V¨u¯w©wÑ%6ÒL¸4¿6¹6ÀUÇWÁWÑ;LÐLr   c                ó&   — dj                  | ¬«      S )Nz9<DSAParameterNumbers(p={self.p}, q={self.q}, g={self.g})>r   ©r/   r   s    r   Ú__repr__zDSAParameterNumbers.__repr__±   s   € ðß!™6 t˜6Ó,ð	
r   )rV   r3   rW   r3   rX   r3   r2   r[   )ra   ú
typing.Anyr   r	   rL   ©r   Ústr)r   r   r   rY   r:   rV   rW   rX   r%   rH   rj   r   r   r   r   r   ‰   sS   „ óð òó ðð òó ðð òó ðô5óMô
r   r   c                  óR   — e Zd Zdd„Zed	d„«       Zed
d„«       Zddd„Zdd„Zdd„Z	y)rJ   c                óŒ   — t        |t        «      st        d«      ‚t        |t        «      st        d«      ‚|| _        || _        y )Nz/DSAPublicNumbers y argument must be an integer.z9parameter_numbers must be a DSAParameterNumbers instance.)rQ   r3   rR   r   Ú_yÚ_parameter_numbers)r   Úyr   s      r   rY   zDSAPublicNumbers.__init__¹   sE   € Ü˜!œSÔ!ÜÐMÓNÐNäÐ+Ô-@ÔAÜØKóð ð ˆŒØ"3ˆÕr   c                ó   — | j                   S r[   )rp   r   s    r   rr   zDSAPublicNumbers.yÅ   r\   r   c                ó   — | j                   S r[   )rq   r   s    r   r   z"DSAPublicNumbers.parameter_numbersÉ   s   € à×&Ñ&Ð&r   Nc                ó0   — ddl m} |j                  | «      S r`   )rb   ra   Úload_dsa_public_numbersrd   s      r   r#   zDSAPublicNumbers.public_keyÍ   s   € õ	
ð ×+Ñ+¨DÓ1Ð1r   c                ó–   — t        |t        «      st        S | j                  |j                  k(  xr | j                  |j                  k(  S r[   )rQ   rJ   rg   rr   r   rF   s     r   rH   zDSAPublicNumbers.__eq__Ô   sD   € Ü˜%Ô!1Ô2Ü!Ð!ð �F‰F�e—g‘gÑò BØ×&Ñ&¨%×*AÑ*AÑAð	
r   c                ó&   — dj                  | ¬«      S )NzJ<DSAPublicNumbers(y={self.y}, parameter_numbers={self.parameter_numbers})>r   ri   r   s    r   rj   zDSAPublicNumbers.__repr__Ý   s   € ð;ß;A¹6Àt¸6Ó;Lð	
r   )rr   r3   r   r   r2   r   r[   )ra   rk   r   r4   rL   rl   )
r   r   r   rY   r:   rr   r   r#   rH   rj   r   r   r   rJ   rJ   ¸   s>   „ ó
4ð òó ðð ò'ó ð'ô2ó
ô
r   rJ   c                  óJ   — e Zd Zdd„Zedd„«       Zed	d„«       Zd
dd„Zdd„Zy)r8   c                óŒ   — t        |t        «      st        d«      ‚t        |t        «      st        d«      ‚|| _        || _        y )Nz0DSAPrivateNumbers x argument must be an integer.z3public_numbers must be a DSAPublicNumbers instance.)rQ   r3   rR   rJ   Ú_public_numbersÚ_x)r   Úxr?   s      r   rY   zDSAPrivateNumbers.__init__å   sD   € Ü˜!œSÔ!ÜÐNÓOÐOä˜.Ô*:Ô;ÜØEóð ð  .ˆÔØˆ�r   c                ó   — | j                   S r[   )r|   r   s    r   r}   zDSAPrivateNumbers.xð   r\   r   c                ó   — | j                   S r[   )r{   r   s    r   r?   z DSAPrivateNumbers.public_numbersô   s   € à×#Ñ#Ð#r   Nc                ó0   — ddl m} |j                  | «      S r`   )rb   ra   Úload_dsa_private_numbersrd   s      r   Úprivate_keyzDSAPrivateNumbers.private_keyø   s   € õ	
ð ×,Ñ,¨TÓ2Ð2r   c                ó–   — t        |t        «      st        S | j                  |j                  k(  xr | j                  |j                  k(  S r[   )rQ   r8   rg   r}   r?   rF   s     r   rH   zDSAPrivateNumbers.__eq__ÿ   s@   € Ü˜%Ô!2Ô3Ü!Ð!ð �F‰F�e—g‘gÑÒM $×"5Ñ"5¸×9MÑ9MÑ"Mð	
r   )r}   r3   r?   rJ   r2   rI   r[   )ra   rk   r   r   rL   )	r   r   r   rY   r:   r}   r?   r‚   rH   r   r   r   r8   r8   ä   s9   „ ó	ð òó ðð ò$ó ð$ô3ô
r   r8   c                ó0   — ddl m} |j                  | «      S r`   )rb   ra   Úgenerate_dsa_parameters©r!   ra   re   s      r   Úgenerate_parametersr‡     s   € õ Mà×'Ñ'¨Ó1Ð1r   c                ó0   — ddl m} |j                  | «      S r`   )rb   ra   Ú'generate_dsa_private_key_and_parametersr†   s      r   r   r     s   € õ Mà×7Ñ7¸ÓAÐAr   c                ó  — | j                   j                  «       dvrt        d«      ‚| j                  j                  «       dvrt        d«      ‚d| j                  cxk  r| j                   k  st        d«      ‚ t        d«      ‚y )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.)rV   Ú
bit_lengthÚ
ValueErrorrW   rX   )r%   s    r   Ú_check_dsa_parametersr‘     s‚   € Ø‡|�|×ÑÓ Ð(@Ñ@ÜØCó
ð 	
ð ‡|�|×ÑÓ ¨Ñ7ÜÐGÓHÐHà�
—‘Ô+˜zŸ|™|Ò+ÜÐ8Ó9Ð9ð ,ÜÐ8Ó9Ð9ð ,r   c                óF  — | j                   j                  }t        |«       | j                  dk  s| j                  |j                  k\  rt        d«      ‚| j                   j                  t        |j                  | j                  |j                  «      k7  rt        d«      ‚y )Nr   zx must be > 0 and < q.z y must be equal to (g ** x % p).)
r?   r   r‘   r}   rW   r�   rr   ÚpowrX   rV   )Únumbersr%   s     r   Ú_check_dsa_private_numbersr•   $  s|   € Ø×'Ñ'×9Ñ9€JÜ˜*Ô%Ø‡y�y�A‚~˜Ÿ™ j§l¡lÒ2ÜÐ1Ó2Ð2à×Ñ×Ñ¤3 z§|¡|°W·Y±YÀ
ÇÁÓ#MÒMÜÐ;Ó<Ð<ð Nr   r[   )r!   r3   ra   rk   r   r	   )r!   r3   ra   rk   r   r   )r%   r   r   rK   )r”   r8   r   rK   )Ú
__future__r   r   ÚtypingÚ"cryptography.hazmat.bindings._rustr   Úrust_opensslÚcryptography.hazmat.primitivesr   r   Ú)cryptography.hazmat.primitives.asymmetricr   Ú
asym_utilsÚABCMetar	   ÚDSAParametersWithNumbersÚregisterÚdsar   ÚDSAPrivateKeyWithSerializationr4   ÚDSAPublicKeyWithSerializationr   rJ   r8   r‡   r   r‘   r•   r   r   r   ú<module>r£      s$  ðõ
 #ã 
Û å Fß AÝ Iô˜cŸk™kõ ð )Ð Ø × Ñ �|×'Ñ'×5Ñ5Ô 6ô-˜cŸk™kõ -ð` "/Ð Ø × Ñ �|×'Ñ'×5Ñ5Ô 6ô-˜SŸ[™[õ -ð` !-Ð Ø × Ñ �l×&Ñ&×3Ñ3Ô 4÷,
ñ ,
÷^)
ñ )
÷X!
ñ !
ðJ *.ð2Øð2Ø&ð2àó2ð *.ðBØðBØ&ðBàóBó	:ô=r   