Ë
    ýQµie  ã                  óü  — d dl mZ d dlZd dlZd dlmZ d dlmZ 	 d	 	 	 	 	 	 	 dd„Z	 G d„ d«      Z
 G d	„ d
«      Z G d„ d«      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(                  «       y)é    )ÚannotationsN)Úopenssl)Ú_serializationÚDHParametersc                ó2   — ddl m} |j                  | |«      S ©Nr   )Úbackend)Ú,cryptography.hazmat.backends.openssl.backendr	   Úgenerate_dh_parameters)Ú	generatorÚkey_sizer	   Úossls       úN/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/asymmetric/dh.pyÚgenerate_parametersr      s   € õ Mà×&Ñ& y°(Ó;Ð;ó    c                  ó^   — e Zd Zdd	d„Zd
d„Zddd„Zedd„«       Zedd„«       Zedd„«       Z	y)ÚDHParameterNumbersNc                ó‚  — t        |t        «      rt        |t        «      st        d«      ‚|�t        |t        «      st        d«      ‚|dk  rt        d«      ‚|j	                  «       t
        j                  j                  k  r't        dt
        j                  j                  › d�«      ‚|| _        || _	        || _
        y )Nzp and g must be integerszq must be integer or Noneé   z!DH generator must be 2 or greaterzp (modulus) must be at least z-bit)Ú
isinstanceÚintÚ	TypeErrorÚ
ValueErrorÚ
bit_lengthÚrust_opensslÚdhÚMIN_MODULUS_SIZEÚ_pÚ_gÚ_q)ÚselfÚpÚgÚqs       r   Ú__init__zDHParameterNumbers.__init__   s¤   € Ü˜!œSÔ!¬°A´sÔ);ÜÐ6Ó7Ð7Øˆ=¤¨A¬sÔ!3ÜÐ7Ó8Ð8àˆqŠ5ÜÐ@ÓAÐAà�<‰<‹>œLŸO™O×<Ñ<Ò<ÜØ/Ü—?‘?×3Ñ3Ð4°Dð:óð ð
 ˆŒØˆŒØˆ�r   c                óÌ   — t        |t        «      st        S | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S ©N)r   r   ÚNotImplementedr   r   r    ©r!   Úothers     r   Ú__eq__zDHParameterNumbers.__eq__*   sN   € Ü˜%Ô!3Ô4Ü!Ð!ð �G‰G�u—x‘xÑÒO D§G¡G¨u¯x©xÑ$7ÒO¸D¿G¹GÀuÇxÁxÑ<Oð	
r   c                ó0   — ddl m} |j                  | «      S r   )r
   r	   Úload_dh_parameter_numbers©r!   r	   r   s      r   Ú
parameterszDHParameterNumbers.parameters2   s   € õ	
ð ×-Ñ-¨dÓ3Ð3r   c                ó   — | j                   S r'   )r   ©r!   s    r   r"   zDHParameterNumbers.p9   ó   € à�w‰wˆr   c                ó   — | j                   S r'   )r   r1   s    r   r#   zDHParameterNumbers.g=   r2   r   c                ó   — | j                   S r'   )r    r1   s    r   r$   zDHParameterNumbers.qA   r2   r   r'   )r"   r   r#   r   r$   útyping.Optional[int]ÚreturnÚNone©r*   Úobjectr6   Úbool)r	   ú
typing.Anyr6   r   ©r6   r   )r6   r5   )
Ú__name__Ú
__module__Ú__qualname__r%   r+   r/   Úpropertyr"   r#   r$   © r   r   r   r      sM   „ ôó&
ô4ð òó ðð òó ðð òó ñr   r   c                  óJ   — e Zd Zdd„Zdd„Zd	d
d„Zedd„«       Zedd„«       Zy)ÚDHPublicNumbersc                óŒ   — t        |t        «      st        d«      ‚t        |t        «      st        d«      ‚|| _        || _        y )Nzy must be an integer.z5parameters must be an instance of DHParameterNumbers.)r   r   r   r   Ú_yÚ_parameter_numbers)r!   ÚyÚparameter_numberss      r   r%   zDHPublicNumbers.__init__G   sE   € Ü˜!œSÔ!ÜÐ3Ó4Ð4äÐ+Ô-?Ô@ÜØGóð ð ˆŒØ"3ˆÕr   c                ó–   — t        |t        «      st        S | j                  |j                  k(  xr | j                  |j                  k(  S r'   )r   rC   r(   rE   rF   r)   s     r   r+   zDHPublicNumbers.__eq__S   sC   € Ü˜%¤Ô1Ü!Ð!ð �G‰G�u—x‘xÑò DØ×'Ñ'¨5×+CÑ+CÑCð	
r   Nc                ó0   — ddl m} |j                  | «      S r   )r
   r	   Úload_dh_public_numbersr.   s      r   Ú
public_keyzDHPublicNumbers.public_key\   s   € õ	
ð ×*Ñ*¨4Ó0Ð0r   c                ó   — | j                   S r'   )rE   r1   s    r   rG   zDHPublicNumbers.yc   r2   r   c                ó   — | j                   S r'   )rF   r1   s    r   rH   z!DHPublicNumbers.parameter_numbersg   s   € à×&Ñ&Ð&r   )rG   r   rH   r   r6   r7   r8   r'   )r	   r;   r6   ÚDHPublicKeyr<   ©r6   r   )	r=   r>   r?   r%   r+   rL   r@   rG   rH   rA   r   r   rC   rC   F   s9   „ ó
4ó
ô1ð òó ðð ò'ó ñ'r   rC   c                  óJ   — e Zd Zdd„Zdd„Zd	d
d„Zedd„«       Zedd„«       Zy)ÚDHPrivateNumbersc                óŒ   — t        |t        «      st        d«      ‚t        |t        «      st        d«      ‚|| _        || _        y )Nzx must be an integer.z6public_numbers must be an instance of DHPublicNumbers.)r   r   r   rC   Ú_xÚ_public_numbers)r!   ÚxÚpublic_numberss      r   r%   zDHPrivateNumbers.__init__m   sC   € Ü˜!œSÔ!ÜÐ3Ó4Ð4ä˜.¬/Ô:ÜØKóð ð ˆŒØ-ˆÕr   c                ó–   — t        |t        «      st        S | j                  |j                  k(  xr | j                  |j                  k(  S r'   )r   rR   r(   rT   rU   r)   s     r   r+   zDHPrivateNumbers.__eq__y   sC   € Ü˜%Ô!1Ô2Ü!Ð!ð �G‰G�u—x‘xÑò >Ø×$Ñ$¨×(=Ñ(=Ñ=ð	
r   Nc                ó0   — ddl m} |j                  | «      S r   )r
   r	   Úload_dh_private_numbersr.   s      r   Úprivate_keyzDHPrivateNumbers.private_key‚   s   € õ	
ð ×+Ñ+¨DÓ1Ð1r   c                ó   — | j                   S r'   )rU   r1   s    r   rW   zDHPrivateNumbers.public_numbers‰   s   € à×#Ñ#Ð#r   c                ó   — | j                   S r'   )rT   r1   s    r   rV   zDHPrivateNumbers.x�   r2   r   )rV   r   rW   rC   r6   r7   r8   r'   )r	   r;   r6   ÚDHPrivateKey©r6   rC   r<   )	r=   r>   r?   r%   r+   r[   r@   rW   rV   rA   r   r   rR   rR   l   s9   „ ó
.ó
ô2ð ò$ó ð$ð òó ñr   rR   c                  óŠ   — e Zd Zej                  dd„«       Zej                  	 	 	 	 	 	 dd„«       Zej                  dd„«       Zy)r   c                 ó   — y)z7
        Generates and returns a DHPrivateKey.
        NrA   r1   s    r   Úgenerate_private_keyz!DHParameters.generate_private_key“   ó   � r   c                 ó   — y)z=
        Returns the parameters serialized as bytes.
        NrA   ©r!   ÚencodingÚformats      r   Úparameter_byteszDHParameters.parameter_bytes™   rc   r   c                 ó   — y)z/
        Returns a DHParameterNumbers.
        NrA   r1   s    r   rH   zDHParameters.parameter_numbers£   rc   r   N)r6   r^   )rf   ú_serialization.Encodingrg   z_serialization.ParameterFormatr6   ÚbytesrP   )r=   r>   r?   ÚabcÚabstractmethodrb   rh   rH   rA   r   r   r   r   ’   sj   „ Ø×Ñòó ðð
 	×Ñðà)ðð /ðð 
ò	ó ðð 	×Ñòó ñ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
y)rO   c                 ó   — y©z6
        The bit length of the prime modulus.
        NrA   r1   s    r   r   zDHPublicKey.key_size¯   rc   r   c                 ó   — y)zJ
        The DHParameters object associated with this public key.
        NrA   r1   s    r   r/   zDHPublicKey.parameters¶   rc   r   c                 ó   — y)z,
        Returns a DHPublicNumbers.
        NrA   r1   s    r   rW   zDHPublicKey.public_numbers¼   rc   r   c                 ó   — y©z6
        Returns the key serialized as bytes.
        NrA   re   s      r   Úpublic_byteszDHPublicKey.public_bytesÂ   rc   r   c                 ó   — y)z"
        Checks equality.
        NrA   r)   s     r   r+   zDHPublicKey.__eq__Ì   rc   r   Nr<   ©r6   r   r_   )rf   rj   rg   z_serialization.PublicFormatr6   rk   r8   )r=   r>   r?   r@   rl   rm   r   r/   rW   rv   r+   rA   r   r   rO   rO   ®   s¦   „ ØØ×Ñòó ó ðð
 	×Ñòó ðð
 	×Ñòó ðð
 	×Ñðà)ðð ,ðð 
ò	ó ðð 	×Ñòó ñr   rO   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)r^   c                 ó   — yrq   rA   r1   s    r   r   zDHPrivateKey.key_sizeØ   rc   r   c                 ó   — y)zC
        The DHPublicKey associated with this private key.
        NrA   r1   s    r   rL   zDHPrivateKey.public_keyß   rc   r   c                 ó   — y)zK
        The DHParameters object associated with this private key.
        NrA   r1   s    r   r/   zDHPrivateKey.parameterså   rc   r   c                 ó   — y)zn
        Given peer's DHPublicKey, carry out the key exchange and
        return shared key as bytes.
        NrA   )r!   Úpeer_public_keys     r   ÚexchangezDHPrivateKey.exchangeë   rc   r   c                 ó   — y)z-
        Returns a DHPrivateNumbers.
        NrA   r1   s    r   Úprivate_numberszDHPrivateKey.private_numbersò   rc   r   c                 ó   — yru   rA   )r!   rf   rg   Úencryption_algorithms       r   Úprivate_byteszDHPrivateKey.private_bytesø   rc   r   Nr<   )r6   rO   rx   )r~   rO   r6   rk   )r6   rR   )rf   rj   rg   z_serialization.PrivateFormatrƒ   z)_serialization.KeySerializationEncryptionr6   rk   )r=   r>   r?   r@   rl   rm   r   rL   r/   r   r�   r„   rA   r   r   r^   r^   ×   sË   „ ØØ×Ñòó ó ðð
 	×Ñòó ðð
 	×Ñòó ðð
 	×Ñòó ðð 	×Ñòó ðð
 	×Ñðà)ðð -ðð Hð	ð
 
òó ñr   r^   r'   )r   r   r   r   r	   r;   r6   r   )Ú
__future__r   rl   ÚtypingÚ"cryptography.hazmat.bindings._rustr   r   Úcryptography.hazmat.primitivesr   r   r   rC   rR   ÚABCMetar   ÚDHParametersWithSerializationÚregisterr   rO   ÚDHPublicKeyWithSerializationr^   ÚDHPrivateKeyWithSerializationrA   r   r   ú<module>rŽ      só   ðõ
 #ã 
Û å FÝ 9ð :>ð<Øð<Ø!ð<Ø,6ð<àó<÷-ñ -÷`#'ñ #'÷L#ñ #ôL˜SŸ[™[õ ð0 !-Ð Ø × Ñ �l—o‘o×2Ñ2Ô 3ô"˜CŸK™Kõ "ðJ  +Ð Ø × Ñ �\—_‘_×0Ñ0Ô 1ô*˜SŸ[™[õ *ðZ !-Ð Ø × Ñ �l—o‘o×2Ñ2Õ 3r   