Ë
    zñ�jE  ã            
       óh  — U d dl mZ d dlmZ d dlmZmZ d dlm	Z	 g d¢Z
	  ej                  «       Zeed<    ej                  «       Zeed<    ej"                  «       Zeed<    ej&                  «       Zeed	<   d
eeef   fd„Zded
eeef   fd„Zdededed
eeef   fd„Zdededed
eeef   fd„Zy)é    )ÚTuple)Ú
exceptions)ÚffiÚlib)Úensure)Úcrypto_kx_keypairÚcrypto_kx_client_session_keysÚcrypto_kx_server_session_keysÚcrypto_kx_PUBLIC_KEY_BYTESÚcrypto_kx_SECRET_KEY_BYTESÚcrypto_kx_SEED_BYTESÚcrypto_kx_SESSION_KEY_BYTESr   r   r   r   Úreturnc                  óH  — t        j                  dt        «      } t        j                  dt        «      }t	        j
                  | |«      }t        |dk(  dt        j                  ¬«       t        j                  | t        «      dd t        j                  |t        «      dd fS )z´
    Generate a key pair.
    This is a duplicate crypto_box_keypair, but
    is included for api consistency.
    :return: (public_key, secret_key)
    :rtype: (bytes, bytes)
    úunsigned char[]r   úKey generation failed.©ÚraisingN)
r   Únewr   r   r   r   r   ÚexcÚCryptoErrorÚbuffer)Ú
public_keyÚ
secret_keyÚress      úX/var/www/api.ozpay.ru/ozpay/venv/lib/python3.12/site-packages/nacl/bindings/crypto_kx.pyr   r   '   sƒ   € ô —‘Ð*Ô,FÓG€JÜ—‘Ð*Ô,FÓG€JÜ
×
Ñ
 
¨JÓ
7€CÜ
ˆ3�!‰8Ð-´s·±ÕGô 	�
‰
�:Ô9Ó:¹1Ð=Ü�
‰
�:Ô9Ó:¹1Ð=ðð ó    Úseedc                 óì  — t        j                  dt        «      }t        j                  dt        «      }t	        t        | t        «      xr t        | «      t        k(  dj                  t        «      t        j                  ¬«       t        j                  ||| «      }t	        |dk(  dt        j                  ¬«       t        j                  |t        «      dd t        j                  |t        «      dd fS )ah  
    Generate a key pair with a given seed.
    This is functionally the same as crypto_box_seed_keypair, however
    it uses the blake2b hash primitive instead of sha512.
    It is included mainly for api consistency when using crypto_kx.
    :param seed: random seed
    :type seed: bytes
    :return: (public_key, secret_key)
    :rtype: (bytes, bytes)
    r   z*Seed must be a {} byte long bytes sequencer   r   r   N)r   r   r   r   r   Ú
isinstanceÚbytesÚlenr   Úformatr   Ú	TypeErrorr   Úcrypto_kx_seed_keypairr   r   )r   r   r   r   s       r   r%   r%   :   sÂ   € ô —‘Ð*Ô,FÓG€JÜ—‘Ð*Ô,FÓG€JÜ
Ü�4œÓÒE¤C¨£IÔ1EÑ$EØ4×;Ñ;Ü ó	
ô —‘õô ×
$Ñ
$ Z°¸TÓ
B€CÜ
ˆ3�!‰8Ð-´s·±ÕGô 	�
‰
�:Ô9Ó:¹1Ð=Ü�
‰
�:Ô9Ó:¹1Ð=ðð r   Úclient_public_keyÚclient_secret_keyÚserver_public_keyc                 ó4  — t        t        | t        «      xr t        | «      t        k(  dj                  t        «      t        j                  ¬«       t        t        |t        «      xr t        |«      t        k(  dj                  t        «      t        j                  ¬«       t        t        |t        «      xr t        |«      t        k(  dj                  t        «      t        j                  ¬«       t        j                  dt        «      }t        j                  dt        «      }t        j                  ||| ||«      }t        |dk(  dt        j                  ¬«       t        j                  |t        «      dd t        j                  |t        «      dd fS )	a+  
    Generate session keys for the client.
    :param client_public_key:
    :type client_public_key: bytes
    :param client_secret_key:
    :type client_secret_key: bytes
    :param server_public_key:
    :type server_public_key: bytes
    :return: (rx_key, tx_key)
    :rtype: (bytes, bytes)
    ú8Client public key must be a {} bytes long bytes sequencer   z8Client secret key must be a {} bytes long bytes sequenceú8Server public key must be a {} bytes long bytes sequencer   r   z%Client session key generation failed.N)r   r    r!   r"   r   r#   r   r$   r   r   r   r   r   r	   r   r   )r&   r'   r(   Úrx_keyÚtx_keyr   s         r   r	   r	   W   óa  € ô  ÜÐ$¤eÓ,ò 	AÜÐ!Ó"Ô&@Ñ@ØB×IÑIÜ&ó	
ô —‘õô ÜÐ$¤eÓ,ò 	AÜÐ!Ó"Ô&@Ñ@ØB×IÑIÜ&ó	
ô —‘õô ÜÐ$¤eÓ,ò 	AÜÐ!Ó"Ô&@Ñ@ØB×IÑIÜ&ó	
ô —‘õô �W‰WÐ&Ô(CÓD€FÜ�W‰WÐ&Ô(CÓD€FÜ
×
+Ñ
+Ø�Ð)Ð+<Ð>Oó€Cô Øˆq‰Ø/Ü—‘õô 	�
‰
�6Ô6Ó7¹Ð:Ü�
‰
�6Ô6Ó7¹Ð:ðð r   Úserver_secret_keyc                 ó4  — t        t        | t        «      xr t        | «      t        k(  dj                  t        «      t        j                  ¬«       t        t        |t        «      xr t        |«      t        k(  dj                  t        «      t        j                  ¬«       t        t        |t        «      xr t        |«      t        k(  dj                  t        «      t        j                  ¬«       t        j                  dt        «      }t        j                  dt        «      }t        j                  ||| ||«      }t        |dk(  dt        j                  ¬«       t        j                  |t        «      dd t        j                  |t        «      dd fS )	a+  
    Generate session keys for the server.
    :param server_public_key:
    :type server_public_key: bytes
    :param server_secret_key:
    :type server_secret_key: bytes
    :param client_public_key:
    :type client_public_key: bytes
    :return: (rx_key, tx_key)
    :rtype: (bytes, bytes)
    r+   r   z8Server secret key must be a {} bytes long bytes sequencer*   r   r   z%Server session key generation failed.N)r   r    r!   r"   r   r#   r   r$   r   r   r   r   r   r
   r   r   )r(   r/   r&   r,   r-   r   s         r   r
   r
   ‘   r.   r   N)Útypingr   Únaclr   r   Únacl._sodiumr   r   Únacl.exceptionsr   Ú__all__Úcrypto_kx_publickeybytesr   ÚintÚ__annotations__Úcrypto_kx_secretkeybytesr   Úcrypto_kx_seedbytesr   Úcrypto_kx_sessionkeybytesr   r!   r   r%   r	   r
   © r   r   ú<module>r=      s  ðö å "ß !Ý "ò€ðð #? #×">Ñ">Ó"@Ð ˜CÓ @Ø"> #×">Ñ">Ó"@Ð ˜CÓ @Ø3˜C×3Ñ3Ó5Ð �cÓ 5Ø#@ 3×#@Ñ#@Ó#BÐ ˜SÓ Bð˜5 ¨ Ñ.ó ð& ð ¨5°¸°Ñ+>ó ð:7Øð7àð7ð ð7ð ˆ5�%ˆ<Ñó	7ðt7Øð7àð7ð ð7ð ˆ5�%ˆ<Ñô	7r   