Ë
    zñ�jzr  ã            
       ó8  — U d dl mZ d dlmZ d dlmZmZ d dlm	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<    ej(                  «       Zeed	<   eez   Z ej.                  «       Zeed
<    ej2                  «       Zeed<    ej6                  «       Zeed<    ej:                  «       Zeed<    ej>                  «       Z eed<   e ez   Z! ejD                  «       Z#eed<    ejH                  «       Z%eed<    ejL                  «       Z'eed<    ejP                  «       Z)eed<    ejT                  «       Z+eed<   e+e)z   Z, ejZ                  «       Z.eed<    ej^                  «       Z0eed<    ejb                  «       Z2eed<    ejf                  «       Z4eed<    ejj                  «       Z6eed<   e6e4z   Z7 ejp                  «       Z9eed<    ejt                  «       Z;eed<    ejx                  «       Z=eed<    ej|                  «       Z?eed<    ej€                  «       ZAeed<   eAe?z   Z7 ej„                  «       ZCeed<    ejˆ                  «       ZEeed<    ejŒ                  «       ZGeed <    ej�                  «       ZIeed!<    ej”                  «       ZKeed"<   eKeIz   Z7d#eLd$eeL   d%eLd&eLd'eLf
d(„ZMd)eLd$eeL   d%eLd&eLd'eLf
d*„ZNd#eLd$eeL   d%eLd&eLd'eLf
d+„ZOd)eLd$eeL   d%eLd&eLd'eLf
d,„ZPd#eLd$eeL   d%eLd&eLd'eLf
d-„ZQd)eLd$eeL   d%eLd&eLd'eLf
d.„ZRd#eLd$eeL   d%eLd&eLd'eLf
d/„ZSd)eLd$eeL   d%eLd&eLd'eLf
d0„ZTd#eLd$eeL   d%eLd&eLd'eLf
d1„ZUd)eLd$eeL   d%eLd&eLd'eLf
d2„ZVd#eLd$eeL   d%eLd&eLd'eLf
d3„ZWd)eLd$eeL   d%eLd&eLd'eLf
d4„ZXy5)6é    )ÚOptional)Ú
exceptions)ÚffiÚlib)ÚensureÚ*crypto_aead_chacha20poly1305_ietf_KEYBYTESÚ+crypto_aead_chacha20poly1305_ietf_NSECBYTESÚ+crypto_aead_chacha20poly1305_ietf_NPUBBYTESÚ(crypto_aead_chacha20poly1305_ietf_ABYTESÚ2crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAXÚ%crypto_aead_chacha20poly1305_KEYBYTESÚ&crypto_aead_chacha20poly1305_NSECBYTESÚ&crypto_aead_chacha20poly1305_NPUBBYTESÚ#crypto_aead_chacha20poly1305_ABYTESÚ-crypto_aead_chacha20poly1305_MESSAGEBYTES_MAXÚ+crypto_aead_xchacha20poly1305_ietf_KEYBYTESÚ,crypto_aead_xchacha20poly1305_ietf_NSECBYTESÚ,crypto_aead_xchacha20poly1305_ietf_NPUBBYTESÚ)crypto_aead_xchacha20poly1305_ietf_ABYTESÚ3crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAXÚcrypto_aead_aegis256_KEYBYTESÚcrypto_aead_aegis256_NSECBYTESÚcrypto_aead_aegis256_NPUBBYTESÚcrypto_aead_aegis256_ABYTESÚ%crypto_aead_aegis256_MESSAGEBYTES_MAXÚcrypto_aead_aegis128l_KEYBYTESÚcrypto_aead_aegis128l_NSECBYTESÚcrypto_aead_aegis128l_NPUBBYTESÚcrypto_aead_aegis128l_ABYTESÚ&crypto_aead_aegis128l_MESSAGEBYTES_MAXÚcrypto_aead_aes256gcm_KEYBYTESÚcrypto_aead_aes256gcm_NSECBYTESÚcrypto_aead_aes256gcm_NPUBBYTESÚcrypto_aead_aes256gcm_ABYTESÚ&crypto_aead_aes256gcm_MESSAGEBYTES_MAXÚmessageÚaadÚnonceÚkeyÚreturnc                 óô  — t        t        | t        «      dt        j                  ¬«       t        | «      }t        |t        k  dj                  t        «      t        j                  ¬«       t        t        |t        «      xs |du d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                  ¬«       |r|}t        |«      }nt        j                  }d}|t        z   }t        j                  d	«      }t        j                  d
|«      }	t        j                   |	|| |||t        j                  ||«	      }
t        |
dk(  dt        j"                  ¬«       t        j$                  |	|d   «      dd S )aZ  
    Encrypt the given ``message`` using the IETF ratified chacha20poly1305
    construction described in RFC7539.

    :param message:
    :type message: bytes
    :param aad:
    :type aad: Optional[bytes]
    :param nonce:
    :type nonce: bytes
    :param key:
    :type key: bytes
    :return: authenticated ciphertext
    :rtype: bytes
    ú Input message type must be bytes©Úraisingú%Message must be at most {} bytes longNú%Additional data must be bytes or Noneú,Nonce must be a {} bytes long bytes sequenceú*Key must be a {} bytes long bytes sequencer   úunsigned long long *úunsigned char[]úEncryption failed.)r   Ú
isinstanceÚbytesÚexcÚ	TypeErrorÚlenr   ÚformatÚ
ValueErrorr
   r   r   ÚNULLr   Únewr   Ú)crypto_aead_chacha20poly1305_ietf_encryptÚCryptoErrorÚbuffer©r&   r'   r(   r)   ÚmlenÚ_aadÚaalenÚmxoutÚclenÚ
ciphertextÚress              úZ/var/www/api.ozpay.ru/ozpay/venv/lib/python3.12/site-packages/nacl/bindings/crypto_aead.pyr?   r?   x   s£  € ô$ Ü�7œEÓ"Ø*Ü—‘õô ˆw‹<€Dä
ØÔBÑBØ/×6Ñ6Ü>ó	
ô —‘õô Ü�3œÓÒ/ 3¨$ ;Ø/Ü—‘õô Ü�5œ%Ó ò 	FÜ�‹JÔEÑEØ6×=Ñ=Ü7ó	
ô —‘õô Ü�3œÓò 	CÜ�‹HÔBÑBØ4×;Ñ;Ü6ó	
ô —‘õñ ØˆÜ�C“‰ä�x‰xˆØˆàÔ;Ñ;€Eä�7‰7Ð)Ó*€Dä—‘Ð*¨EÓ2€Jä
×
7Ñ
7Ø�D˜' 4¨¨u´c·h±hÀÀsó€Cô ˆ3�!‰8Ð)´3·?±?ÕCÜ�:‰:�j $ q¡'Ó*©1Ð-Ð-ó    rH   c                 óô  — t        t        | t        «      dt        j                  ¬«       t        | «      }t        |t        k  dj                  t        «      t        j                  ¬«       t        t        |t        «      xs |du d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        z
  }t        j                  d«      }t        j                  d	|«      }|r|}t        |«      }	nt        j                  }d
}	t        j                   ||t        j                  | |||	||«	      }
t        |
d
k(  dt        j"                  ¬«       t        j$                  ||d
   «      dd S )aR  
    Decrypt the given ``ciphertext`` using the IETF ratified chacha20poly1305
    construction described in RFC7539.

    :param ciphertext:
    :type ciphertext: bytes
    :param aad:
    :type aad: Optional[bytes]
    :param nonce:
    :type nonce: bytes
    :param key:
    :type key: bytes
    :return: message
    :rtype: bytes
    ú#Input ciphertext type must be bytesr-   ú(Ciphertext must be at most {} bytes longNr0   r1   r2   r3   r4   r   úDecryption failed.)r   r6   r7   r8   r9   r:   Ú*_aead_chacha20poly1305_ietf_CRYPTBYTES_MAXr;   r<   r
   r   r   r   r>   r=   r   Ú)crypto_aead_chacha20poly1305_ietf_decryptr@   rA   ©rH   r'   r(   r)   rG   rF   rC   r&   rD   rE   rI   s              rJ   rQ   rQ   Ç   s£  € ô$ Ü�:œuÓ%Ø-Ü—‘õô ˆz‹?€Dä
ØÔ:Ñ:Ø2×9Ñ9Ü6ó	
ô —‘õô Ü�3œÓÒ/ 3¨$ ;Ø/Ü—‘õô Ü�5œ%Ó ò 	FÜ�‹JÔEÑEØ6×=Ñ=Ü7ó	
ô —‘õô Ü�3œÓò 	CÜ�‹HÔBÑBØ4×;Ñ;Ü6ó	
ô —‘õð Ô;Ñ;€Eä�7‰7Ð)Ó*€DÜ�g‰gÐ'¨Ó/€Gá
ØˆÜ�C“‰ä�x‰xˆØˆä
×
7Ñ
7Ø�”s—x‘x ¨T°4¸ÀÀsó€Cô ˆ3�!‰8Ð)´3·?±?ÕCä�:‰:�g˜t A™wÓ'©Ð*Ð*rK   c                 óô  — t        t        | t        «      dt        j                  ¬«       t        | «      }t        |t        k  dj                  t        «      t        j                  ¬«       t        t        |t        «      xs |du d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                  ¬«       |r|}t        |«      }nt        j                  }d}|t        z   }t        j                  d	«      }t        j                  d
|«      }	t        j                   |	|| |||t        j                  ||«	      }
t        |
dk(  dt        j"                  ¬«       t        j$                  |	|d   «      dd S )a[  
    Encrypt the given ``message`` using the "legacy" construction
    described in draft-agl-tls-chacha20poly1305.

    :param message:
    :type message: bytes
    :param aad:
    :type aad: Optional[bytes]
    :param nonce:
    :type nonce: bytes
    :param key:
    :type key: bytes
    :return: authenticated ciphertext
    :rtype: bytes
    r,   r-   r/   Nr0   r1   r2   r   r3   r4   r5   )r   r6   r7   r8   r9   r:   r   r;   r<   r   r   r   r=   r   r>   r   Ú$crypto_aead_chacha20poly1305_encryptr@   rA   rB   s              rJ   rT   rT     s¢  € ô$ Ü�7œEÓ"Ø*Ü—‘õô ˆw‹<€Dä
ØÔ=Ñ=Ø/×6Ñ6Ü9ó	
ô —‘õô Ü�3œÓÒ/ 3¨$ ;Ø/Ü—‘õô Ü�5œ%Ó ò 	AÜ�‹JÔ@Ñ@Ø6×=Ñ=Ü2ó	
ô —‘õô Ü�3œÓò 	>Ü�‹HÔ=Ñ=Ø4×;Ñ;Ü1ó	
ô —‘õñ ØˆÜ�C“‰ä�x‰xˆØˆàÔ;Ñ;€Eä�7‰7Ð)Ó*€Dä—‘Ð*¨EÓ2€Jä
×
2Ñ
2Ø�D˜' 4¨¨u´c·h±hÀÀsó€Cô ˆ3�!‰8Ð)´3·?±?ÕCÜ�:‰:�j $ q¡'Ó*©1Ð-Ð-rK   c                 óô  — t        t        | t        «      dt        j                  ¬«       t        | «      }t        |t        k  dj                  t        «      t        j                  ¬«       t        t        |t        «      xs |du d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        z
  }t        j                  d«      }t        j                  d	|«      }|r|}t        |«      }	nt        j                  }d
}	t        j                   ||t        j                  | |||	||«	      }
t        |
d
k(  dt        j"                  ¬«       t        j$                  ||d
   «      dd S )al  
    Decrypt the given ``ciphertext`` using the "legacy" construction
    described in draft-agl-tls-chacha20poly1305.

    :param ciphertext: authenticated ciphertext
    :type ciphertext: bytes
    :param aad:
    :type aad: Optional[bytes]
    :param nonce:
    :type nonce: bytes
    :param key:
    :type key: bytes
    :return: message
    :rtype: bytes
    rM   r-   rN   Nr0   r1   r2   r3   r4   r   rO   )r   r6   r7   r8   r9   r:   Ú%_aead_chacha20poly1305_CRYPTBYTES_MAXr;   r<   r   r   r   r   r>   r=   r   Ú$crypto_aead_chacha20poly1305_decryptr@   rA   rR   s              rJ   rW   rW   e  s¢  € ô$ Ü�:œuÓ%Ø-Ü—‘õô ˆz‹?€Dä
ØÔ5Ñ5Ø2×9Ñ9Ü1ó	
ô —‘õô Ü�3œÓÒ/ 3¨$ ;Ø/Ü—‘õô Ü�5œ%Ó ò 	AÜ�‹JÔ@Ñ@Ø6×=Ñ=Ü2ó	
ô —‘õô Ü�3œÓò 	>Ü�‹HÔ=Ñ=Ø4×;Ñ;Ü1ó	
ô —‘õð Ô6Ñ6€Eä�7‰7Ð)Ó*€DÜ�g‰gÐ'¨Ó/€Gá
ØˆÜ�C“‰ä�x‰xˆØˆä
×
2Ñ
2Ø�”s—x‘x ¨T°4¸ÀÀsó€Cô ˆ3�!‰8Ð)´3·?±?ÕCä�:‰:�g˜t A™wÓ'©Ð*Ð*rK   c                 óô  — t        t        | t        «      dt        j                  ¬«       t        | «      }t        |t        k  dj                  t        «      t        j                  ¬«       t        t        |t        «      xs |du d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                  ¬«       |r|}t        |«      }nt        j                  }d}|t        z   }t        j                  d	«      }t        j                  d
|«      }	t        j                   |	|| |||t        j                  ||«	      }
t        |
dk(  dt        j"                  ¬«       t        j$                  |	|d   «      dd S )aD  
    Encrypt the given ``message`` using the long-nonces xchacha20poly1305
    construction.

    :param message:
    :type message: bytes
    :param aad:
    :type aad: Optional[bytes]
    :param nonce:
    :type nonce: bytes
    :param key:
    :type key: bytes
    :return: authenticated ciphertext
    :rtype: bytes
    r,   r-   r/   Nr0   r1   r2   r   r3   r4   r5   )r   r6   r7   r8   r9   r:   r   r;   r<   r   r   r   r=   r   r>   r   Ú*crypto_aead_xchacha20poly1305_ietf_encryptr@   rA   rB   s              rJ   rY   rY   ´  s£  € ô$ Ü�7œEÓ"Ø*Ü—‘õô ˆw‹<€Dä
ØÔCÑCØ/×6Ñ6Ü?ó	
ô —‘õô Ü�3œÓÒ/ 3¨$ ;Ø/Ü—‘õô Ü�5œ%Ó ò 	GÜ�‹JÔFÑFØ6×=Ñ=Ü8ó	
ô —‘õô Ü�3œÓò 	DÜ�‹HÔCÑCØ4×;Ñ;Ü7ó	
ô —‘õñ ØˆÜ�C“‰ä�x‰xˆØˆàÔ<Ñ<€Eä�7‰7Ð)Ó*€Dä—‘Ð*¨EÓ2€Jä
×
8Ñ
8Ø�D˜' 4¨¨u´c·h±hÀÀsó€Cô ˆ3�!‰8Ð)´3·?±?ÕCÜ�:‰:�j $ q¡'Ó*©1Ð-Ð-rK   c                 óô  — t        t        | t        «      dt        j                  ¬«       t        | «      }t        |t        k  dj                  t        «      t        j                  ¬«       t        t        |t        «      xs |du d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        z
  }t        j                  d«      }t        j                  d	|«      }|r|}t        |«      }	nt        j                  }d
}	t        j                   ||t        j                  | |||	||«	      }
t        |
d
k(  dt        j"                  ¬«       t        j$                  ||d
   «      dd S )aU  
    Decrypt the given ``ciphertext`` using the long-nonces xchacha20poly1305
    construction.

    :param ciphertext: authenticated ciphertext
    :type ciphertext: bytes
    :param aad:
    :type aad: Optional[bytes]
    :param nonce:
    :type nonce: bytes
    :param key:
    :type key: bytes
    :return: message
    :rtype: bytes
    rM   r-   rN   Nr0   r1   r2   r3   r4   r   rO   )r   r6   r7   r8   r9   r:   Ú+_aead_xchacha20poly1305_ietf_CRYPTBYTES_MAXr;   r<   r   r   r   r   r>   r=   r   Ú*crypto_aead_xchacha20poly1305_ietf_decryptr@   rA   rR   s              rJ   r\   r\     s£  € ô$ Ü�:œuÓ%Ø-Ü—‘õô ˆz‹?€Dä
ØÔ;Ñ;Ø2×9Ñ9Ü7ó	
ô —‘õô Ü�3œÓÒ/ 3¨$ ;Ø/Ü—‘õô Ü�5œ%Ó ò 	GÜ�‹JÔFÑFØ6×=Ñ=Ü8ó	
ô —‘õô Ü�3œÓò 	DÜ�‹HÔCÑCØ4×;Ñ;Ü7ó	
ô —‘õð Ô<Ñ<€EÜ�7‰7Ð)Ó*€DÜ�g‰gÐ'¨Ó/€Gá
ØˆÜ�C“‰ä�x‰xˆØˆä
×
8Ñ
8Ø�”s—x‘x ¨T°4¸ÀÀsó€Cô ˆ3�!‰8Ð)´3·?±?ÕCä�:‰:�g˜t A™wÓ'©Ð*Ð*rK   c                 óô  — t        t        | t        «      dt        j                  ¬«       t        | «      }t        |t        k  dj                  t        «      t        j                  ¬«       t        t        |t        «      xs |du d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                  ¬«       |r|}t        |«      }nt        j                  }d}|t        z   }t        j                  d	«      }t        j                  d
|«      }	t        j                   |	|| |||t        j                  ||«	      }
t        |
dk(  dt        j"                  ¬«       t        j$                  |	|d   «      dd S )a0  
    Encrypt the given ``message`` using the AEGIS-256
    construction.

    :param message:
    :type message: bytes
    :param aad:
    :type aad: Optional[bytes]
    :param nonce:
    :type nonce: bytes
    :param key:
    :type key: bytes
    :return: authenticated ciphertext
    :rtype: bytes
    r,   r-   r/   Nr0   r1   r2   r   r3   r4   r5   )r   r6   r7   r8   r9   r:   r   r;   r<   r   r   r   r=   r   r>   r   Úcrypto_aead_aegis256_encryptr@   rA   rB   s              rJ   r^   r^   Q  sž  € ô$ Ü�7œEÓ"Ø*Ü—‘õô ˆw‹<€Dä
ØÔ5Ñ5Ø/×6Ñ6Ü1ó	
ô —‘õô Ü�3œÓÒ/ 3¨$ ;Ø/Ü—‘õô Ü�5œ%Ó ò 	9Ü�‹JÔ8Ñ8Ø6×=Ñ=Ü*ó	
ô —‘õô Ü�3œÓÒL¤3 s£8Ô/LÑ#LØ4×;Ñ;Ü)ó	
ô —‘õñ ØˆÜ�C“‰ä�x‰xˆØˆàÔ.Ñ.€Eä�7‰7Ð)Ó*€Dä—‘Ð*¨EÓ2€Jä
×
*Ñ
*Ø�D˜' 4¨¨u´c·h±hÀÀsó€Cô ˆ3�!‰8Ð)´3·?±?ÕCÜ�:‰:�j $ q¡'Ó*©1Ð-Ð-rK   c                 óô  — t        t        | t        «      dt        j                  ¬«       t        | «      }t        |t        k  dj                  t        «      t        j                  ¬«       t        t        |t        «      xs |du d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        z
  }t        j                  d«      }t        j                  d	|«      }|r|}t        |«      }	nt        j                  }d
}	t        j                   ||t        j                  | |||	||«	      }
t        |
d
k(  dt        j"                  ¬«       t        j$                  ||d
   «      dd S )aA  
    Decrypt the given ``ciphertext`` using the AEGIS-256
    construction.

    :param ciphertext: authenticated ciphertext
    :type ciphertext: bytes
    :param aad:
    :type aad: Optional[bytes]
    :param nonce:
    :type nonce: bytes
    :param key:
    :type key: bytes
    :return: message
    :rtype: bytes
    rM   r-   rN   Nr0   r1   r2   r3   r4   r   rO   )r   r6   r7   r8   r9   r:   Ú_aead_aegis256_CRYPTBYTES_MAXr;   r<   r   r   r   r   r>   r=   r   Úcrypto_aead_aegis256_decryptr@   rA   rR   s              rJ   ra   ra   Ÿ  sž  € ô$ Ü�:œuÓ%Ø-Ü—‘õô ˆz‹?€Dä
ØÔ-Ñ-Ø2×9Ñ9Ü)ó	
ô —‘õô Ü�3œÓÒ/ 3¨$ ;Ø/Ü—‘õô Ü�5œ%Ó ò 	9Ü�‹JÔ8Ñ8Ø6×=Ñ=Ü*ó	
ô —‘õô Ü�3œÓÒL¤3 s£8Ô/LÑ#LØ4×;Ñ;Ü)ó	
ô —‘õð Ô.Ñ.€EÜ�7‰7Ð)Ó*€DÜ�g‰gÐ'¨Ó/€Gá
ØˆÜ�C“‰ä�x‰xˆØˆä
×
*Ñ
*Ø�”s—x‘x ¨T°4¸ÀÀsó€Cô ˆ3�!‰8Ð)´3·?±?ÕCä�:‰:�g˜t A™wÓ'©Ð*Ð*rK   c                 óô  — t        t        | t        «      dt        j                  ¬«       t        | «      }t        |t        k  dj                  t        «      t        j                  ¬«       t        t        |t        «      xs |du d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                  ¬«       |r|}t        |«      }nt        j                  }d}|t        z   }t        j                  d	«      }t        j                  d
|«      }	t        j                   |	|| |||t        j                  ||«	      }
t        |
dk(  dt        j"                  ¬«       t        j$                  |	|d   «      dd S )a1  
    Encrypt the given ``message`` using the AEGIS-128L
    construction.

    :param message:
    :type message: bytes
    :param aad:
    :type aad: Optional[bytes]
    :param nonce:
    :type nonce: bytes
    :param key:
    :type key: bytes
    :return: authenticated ciphertext
    :rtype: bytes
    r,   r-   r/   Nr0   r1   r2   r   r3   r4   r5   )r   r6   r7   r8   r9   r:   r    r;   r<   r   r   r   r=   r   r>   r   Úcrypto_aead_aegis128l_encryptr@   rA   rB   s              rJ   rc   rc   ì  sž  € ô$ Ü�7œEÓ"Ø*Ü—‘õô ˆw‹<€Dä
ØÔ6Ñ6Ø/×6Ñ6Ü2ó	
ô —‘õô Ü�3œÓÒ/ 3¨$ ;Ø/Ü—‘õô Ü�5œ%Ó ò 	:Ü�‹JÔ9Ñ9Ø6×=Ñ=Ü+ó	
ô —‘õô Ü�3œÓÒM¤3 s£8Ô/MÑ#MØ4×;Ñ;Ü*ó	
ô —‘õñ ØˆÜ�C“‰ä�x‰xˆØˆàÔ/Ñ/€Eä�7‰7Ð)Ó*€Dä—‘Ð*¨EÓ2€Jä
×
+Ñ
+Ø�D˜' 4¨¨u´c·h±hÀÀsó€Cô ˆ3�!‰8Ð)´3·?±?ÕCÜ�:‰:�j $ q¡'Ó*©1Ð-Ð-rK   c                 óô  — t        t        | t        «      dt        j                  ¬«       t        | «      }t        |t        k  dj                  t        «      t        j                  ¬«       t        t        |t        «      xs |du d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        z
  }t        j                  d«      }t        j                  d	|«      }|r|}t        |«      }	nt        j                  }d
}	t        j                   ||t        j                  | |||	||«	      }
t        |
d
k(  dt        j"                  ¬«       t        j$                  ||d
   «      dd S )aB  
    Decrypt the given ``ciphertext`` using the AEGIS-128L
    construction.

    :param ciphertext: authenticated ciphertext
    :type ciphertext: bytes
    :param aad:
    :type aad: Optional[bytes]
    :param nonce:
    :type nonce: bytes
    :param key:
    :type key: bytes
    :return: message
    :rtype: bytes
    rM   r-   rN   Nr0   r1   r2   r3   r4   r   rO   )r   r6   r7   r8   r9   r:   r`   r;   r<   r   r   r   r   r>   r=   r   Úcrypto_aead_aegis128l_decryptr@   rA   rR   s              rJ   re   re   :  sž  € ô$ Ü�:œuÓ%Ø-Ü—‘õô ˆz‹?€Dä
ØÔ-Ñ-Ø2×9Ñ9Ü)ó	
ô —‘õô Ü�3œÓÒ/ 3¨$ ;Ø/Ü—‘õô Ü�5œ%Ó ò 	:Ü�‹JÔ9Ñ9Ø6×=Ñ=Ü+ó	
ô —‘õô Ü�3œÓÒM¤3 s£8Ô/MÑ#MØ4×;Ñ;Ü*ó	
ô —‘õð Ô/Ñ/€EÜ�7‰7Ð)Ó*€DÜ�g‰gÐ'¨Ó/€Gá
ØˆÜ�C“‰ä�x‰xˆØˆä
×
+Ñ
+Ø�”s—x‘x ¨T°4¸ÀÀsó€Cô ˆ3�!‰8Ð)´3·?±?ÕCä�:‰:�g˜t A™wÓ'©Ð*Ð*rK   c                 óV  — t        t        j                  «       dk(  dt        j                  ¬«       t        t        | t        «      dt        j                  ¬«       t        | «      }t        |t        k  dj                  t        «      t        j                  ¬«       t        t        |t        «      xs |du d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                  ¬«       |r|}t        |«      }nt        j                  }d
}|t         z   }t        j"                  d«      }t        j"                  d|«      }	t        j$                  |	|| |||t        j                  ||«	      }
t        |
d
k(  dt        j&                  ¬«       t        j(                  |	|d
   «      dd S )a{  
    Encrypt the given ``message`` using the AES-256-GCM
    construction.  Requires the Intel AES-NI extensions,
    or the ARM Crypto extensions.

    :param message:
    :type message: bytes
    :param aad:
    :type aad: Optional[bytes]
    :param nonce:
    :type nonce: bytes
    :param key:
    :type key: bytes
    :return: authenticated ciphertext
    :rtype: bytes
    é   ú+Construction requires hardware accelerationr-   r,   r/   Nr0   r1   r2   r   r3   r4   r5   )r   r   Ú"crypto_aead_aes256gcm_is_availabler8   ÚUnavailableErrorr6   r7   r9   r:   r%   r;   r<   r#   r!   r   r=   r$   r>   Úcrypto_aead_aes256gcm_encryptr@   rA   rB   s              rJ   rk   rk   ‡  sÅ  € ô& Ü×.Ñ.Ó0°AÑ5Ø5Ü×$Ñ$õô Ü�7œEÓ"Ø*Ü—‘õô ˆw‹<€Dä
ØÔ6Ñ6Ø/×6Ñ6Ü2ó	
ô —‘õô Ü�3œÓÒ/ 3¨$ ;Ø/Ü—‘õô Ü�5œ%Ó ò 	:Ü�‹JÔ9Ñ9Ø6×=Ñ=Ü+ó	
ô —‘õô Ü�3œÓÒM¤3 s£8Ô/MÑ#MØ4×;Ñ;Ü*ó	
ô —‘õñ ØˆÜ�C“‰ä�x‰xˆØˆàÔ/Ñ/€Eä�7‰7Ð)Ó*€Dä—‘Ð*¨EÓ2€Jä
×
+Ñ
+Ø�D˜' 4¨¨u´c·h±hÀÀsó€Cô ˆ3�!‰8Ð)´3·?±?ÕCÜ�:‰:�j $ q¡'Ó*©1Ð-Ð-rK   c                 óV  — t        t        j                  «       dk(  dt        j                  ¬«       t        t        | t        «      dt        j                  ¬«       t        | «      }t        |t        k  dj                  t        «      t        j                  ¬«       t        t        |t        «      xs |du d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        z
  }t        j                   d
«      }t        j                   d|«      }|r|}t        |«      }	nt        j"                  }d}	t        j$                  ||t        j"                  | |||	||«	      }
t        |
dk(  dt        j&                  ¬«       t        j(                  ||d   «      dd S )aŒ  
    Decrypt the given ``ciphertext`` using the AES-256-GCM
    construction.  Requires the Intel AES-NI extensions,
    or the ARM Crypto extensions.

    :param ciphertext: authenticated ciphertext
    :type ciphertext: bytes
    :param aad:
    :type aad: Optional[bytes]
    :param nonce:
    :type nonce: bytes
    :param key:
    :type key: bytes
    :return: message
    :rtype: bytes
    rg   rh   r-   rM   rN   Nr0   r1   r2   r3   r4   r   rO   )r   r   ri   r8   rj   r6   r7   r9   r:   r`   r;   r<   r#   r!   r$   r   r>   r=   Úcrypto_aead_aes256gcm_decryptr@   rA   rR   s              rJ   rm   rm   Ü  sÅ  € ô& Ü×.Ñ.Ó0°AÑ5Ø5Ü×$Ñ$õô Ü�:œuÓ%Ø-Ü—‘õô ˆz‹?€Dä
ØÔ-Ñ-Ø2×9Ñ9Ü)ó	
ô —‘õô Ü�3œÓÒ/ 3¨$ ;Ø/Ü—‘õô Ü�5œ%Ó ò 	:Ü�‹JÔ9Ñ9Ø6×=Ñ=Ü+ó	
ô —‘õô Ü�3œÓÒM¤3 s£8Ô/MÑ#MØ4×;Ñ;Ü*ó	
ô —‘õð Ô/Ñ/€EÜ�7‰7Ð)Ó*€DÜ�g‰gÐ'¨Ó/€Gá
ØˆÜ�C“‰ä�x‰xˆØˆä
×
+Ñ
+Ø�”s—x‘x ¨T°4¸ÀÀsó€Cô ˆ3�!‰8Ð)´3·?±?ÕCä�:‰:�g˜t A™wÓ'©Ð*Ð*rK   N)YÚtypingr   Únaclr   r8   Únacl._sodiumr   r   Únacl.exceptionsr   Ú*crypto_aead_chacha20poly1305_ietf_keybytesr   ÚintÚ__annotations__Ú+crypto_aead_chacha20poly1305_ietf_nsecbytesr	   Ú+crypto_aead_chacha20poly1305_ietf_npubbytesr
   Ú(crypto_aead_chacha20poly1305_ietf_abytesr   Ú2crypto_aead_chacha20poly1305_ietf_messagebytes_maxr   rP   Ú%crypto_aead_chacha20poly1305_keybytesr   Ú&crypto_aead_chacha20poly1305_nsecbytesr   Ú&crypto_aead_chacha20poly1305_npubbytesr   Ú#crypto_aead_chacha20poly1305_abytesr   Ú-crypto_aead_chacha20poly1305_messagebytes_maxr   rV   Ú+crypto_aead_xchacha20poly1305_ietf_keybytesr   Ú,crypto_aead_xchacha20poly1305_ietf_nsecbytesr   Ú,crypto_aead_xchacha20poly1305_ietf_npubbytesr   Ú)crypto_aead_xchacha20poly1305_ietf_abytesr   Ú3crypto_aead_xchacha20poly1305_ietf_messagebytes_maxr   r[   Úcrypto_aead_aegis256_keybytesr   Úcrypto_aead_aegis256_nsecbytesr   Úcrypto_aead_aegis256_npubbytesr   Úcrypto_aead_aegis256_abytesr   Ú%crypto_aead_aegis256_messagebytes_maxr   r`   Úcrypto_aead_aegis128l_keybytesr   Úcrypto_aead_aegis128l_nsecbytesr   Úcrypto_aead_aegis128l_npubbytesr   Úcrypto_aead_aegis128l_abytesr   Ú&crypto_aead_aegis128l_messagebytes_maxr    Úcrypto_aead_aes256gcm_keybytesr!   Úcrypto_aead_aes256gcm_nsecbytesr"   Úcrypto_aead_aes256gcm_npubbytesr#   Úcrypto_aead_aes256gcm_abytesr$   Ú&crypto_aead_aes256gcm_messagebytes_maxr%   r7   r?   rQ   rT   rW   rY   r\   r^   ra   rc   re   rk   rm   © rK   rJ   ú<module>r“      s   ðö å "ß !Ý "ðð 3€C×2Ñ2Ó4ð +¨Có ð 4€C×3Ñ3Ó5ð ,¨Só ð 4€C×3Ñ3Ó5ð ,¨Só ð 1€C×0Ñ0Ó2ð )¨#ó ð ;€C×:Ñ:Ó<ð 3°Có ð 7Ø.ñ/ð +ð .€C×-Ñ-Ó/ð & só ð /€C×.Ñ.Ó0ð '¨ó ð /€C×.Ñ.Ó0ð '¨ó ð ,€C×+Ñ+Ó-ð $ Só ð 6€C×5Ñ5Ó7ð .¨só ð 2Ø)ñ*ð &ð 4€C×3Ñ3Ó5ð ,¨Só ð 5€C×4Ñ4Ó6ð -¨có ð 5€C×4Ñ4Ó6ð -¨có ð 2€C×1Ñ1Ó3ð *¨3ó ð <€C×;Ñ;Ó=ð 4°Só ð 8Ø/ñ0ð ,ð
 &G S×%FÑ%FÓ%HÐ ˜sÓ HØ&H c×&HÑ&HÓ&JÐ  Ó JØ&H c×&HÑ&HÓ&JÐ  Ó JØ#B 3×#BÑ#BÓ#DÐ ˜SÓ Dà-€C×-Ñ-Ó/ð & só ð *Ð,GÑGð ð 'I c×&HÑ&HÓ&JÐ  Ó JØ'J s×'JÑ'JÓ'LÐ  Ó LØ'J s×'JÑ'JÓ'LÐ  Ó LØ$D C×$DÑ$DÓ$FÐ ˜cÓ Fà.€C×.Ñ.Ó0ð '¨ó ð +Ð-IÑIð ð 'I c×&HÑ&HÓ&JÐ  Ó JØ'J s×'JÑ'JÓ'LÐ  Ó LØ'J s×'JÑ'JÓ'LÐ  Ó LØ$D C×$DÑ$DÓ$FÐ ˜cÓ Fà.€C×.Ñ.Ó0ð '¨ó ð +Ð-IÑIð ð
L.ØðL.Ø! %™ðL.Ø16ðL.Ø=BðL.à
óL.ð^L+ØðL+Ø$ U™OðL+Ø49ðL+Ø@EðL+à
óL+ð^L.ØðL.Ø! %™ðL.Ø16ðL.Ø=BðL.à
óL.ð^L+ØðL+Ø$ U™OðL+Ø49ðL+Ø@EðL+à
óL+ð^L.ØðL.Ø! %™ðL.Ø16ðL.Ø=BðL.à
óL.ð^K+ØðK+Ø$ U™OðK+Ø49ðK+Ø@EðK+à
óK+ð\K.ØðK.Ø! %™ðK.Ø16ðK.Ø=BðK.à
óK.ð\J+ØðJ+Ø$ U™OðJ+Ø49ðJ+Ø@EðJ+à
óJ+ðZK.ØðK.Ø! %™ðK.Ø16ðK.Ø=BðK.à
óK.ð\J+ØðJ+Ø$ U™OðJ+Ø49ðJ+Ø@EðJ+à
óJ+ðZR.ØðR.Ø! %™ðR.Ø16ðR.Ø=BðR.à
óR.ðjQ+ØðQ+Ø$ U™OðQ+Ø49ðQ+Ø@EðQ+à
ôQ+rK   