ó
    &ÝNjk(  ã                   óJ  • % S SK Jr  S SKJr  S SKJrJr  S SKJ	r	  \R                  " 5       r\\S'   \R                  " 5       S-  r\\S'   \R                   " 5       r\\S'   \R                  " 5       r\\S	'   \R&                  " 5       r\\S
'   \R*                  " 5       r\\S'   S\\\4   4S jrS\S\\\4   4S jrS\S\S\4S jrS\S\S\4S jrS\S\4S jrS\S\4S jrS\S\4S jrS\S\4S jr " S S5      r S\ S\SS 4S! jr!S\ S\S\4S" jr"S\ S#\S\S\#4S$ jr$g )%é    )ÚTuple)Ú
exceptions)ÚffiÚlib)ÚensureÚcrypto_sign_BYTESé   Úcrypto_sign_SEEDBYTESÚcrypto_sign_PUBLICKEYBYTESÚcrypto_sign_SECRETKEYBYTESÚcrypto_sign_curve25519_BYTESÚ crypto_sign_ed25519ph_STATEBYTESÚreturnc                  óJ  • [         R                  " S[        5      n [         R                  " S[        5      n[        R
                  " X5      n[        US:H  S[        R                  S9  [         R                  " U [        5      SS [         R                  " U[        5      SS 4$ )zi
Returns a randomly generated public key and secret key.

:rtype: (bytes(public_key), bytes(secret_key))
úunsigned char[]r   úUnexpected library error©ÚraisingN)
r   Únewr   r   r   Úcrypto_sign_keypairr   ÚexcÚRuntimeErrorÚbuffer)ÚpkÚskÚrcs      ÚV/home/mande/repo/quber/.venv/lib/python3.13/site-packages/nacl/bindings/crypto_sign.pyr   r       sƒ   € ô 
�ŠÐ"Ô$>Ó	?€BÜ	�ŠÐ"Ô$>Ó	?€Bä	×	 Ò	  Ó	(€BÜ
ˆ2�‰7Ð.¼×8HÑ8HÒIô 	�
Š
�2Ô1Ó2±1Ð5Ü�
Š
�2Ô1Ó2±1Ð5ðð ó    Úseedc                 óž  • [        U 5      [        :w  a  [        R                  " S5      e[        R
                  " S[        5      n[        R
                  " S[        5      n[        R                  " XU 5      n[        US:H  S[        R                  S9  [        R                  " U[        5      SS [        R                  " U[        5      SS 4$ )z�
Computes and returns the public key and secret key using the seed ``seed``.

:param seed: bytes
:rtype: (bytes(public_key), bytes(secret_key))
zInvalid seedr   r   r   r   N)Úlenr
   r   Ú
ValueErrorr   r   r   r   r   Úcrypto_sign_seed_keypairr   r   r   )r   r   r   r   s       r   r#   r#   2   s¡   € ô ˆ4ƒyÔ)Ó)Ü�nŠn˜^Ó,Ð,ä	�ŠÐ"Ô$>Ó	?€BÜ	�ŠÐ"Ô$>Ó	?€Bä	×	%Ò	% b¨dÓ	3€BÜ
ˆ2�‰7Ð.¼×8HÑ8HÒIô 	�
Š
�2Ô1Ó2±1Ð5Ü�
Š
�2Ô1Ó2±1Ð5ðð r   Úmessager   c                 ó0  • [         R                  " S[        U 5      [        -   5      n[         R                  " S5      n[        R
                  " X#U [        U 5      U5      n[        US:H  S[        R                  S9  [         R                  " X#S   5      SS $ )z‘
Signs the message ``message`` using the secret key ``sk`` and returns the
signed message.

:param message: bytes
:param sk: bytes
:rtype: bytes
r   úunsigned long long *r   r   r   N)
r   r   r!   r   r   Úcrypto_signr   r   r   r   )r$   r   ÚsignedÚ
signed_lenr   s        r   r'   r'   H   su   € ô �WŠWÐ&¬¨G«Ô7HÑ(HÓI€FÜ—’Ð/Ó0€Jä	�Š˜¨W´c¸'³lÀBÓ	G€BÜ
ˆ2�‰7Ð.¼×8HÑ8HÒIä�:Š:�f¨™mÓ,©QÐ/Ð/r   r(   r   c                 ó  • [         R                  " S[        U 5      5      n[         R                  " S5      n[        R                  " X#U [        U 5      U5      S:w  a  [
        R                  " S5      e[         R                  " X#S   5      SS $ )z¬
Verifies the signature of the signed message ``signed`` using the public
key ``pk`` and returns the unsigned message.

:param signed: bytes
:param pk: bytes
:rtype: bytes
r   r&   r   úSignature was forged or corruptN)r   r   r!   r   Úcrypto_sign_openr   ÚBadSignatureErrorr   )r(   r   r$   Úmessage_lens       r   r,   r,   Z   sv   € ô �gŠgÐ'¬¨V«Ó5€GÜ—'’'Ð0Ó1€Kô 	×Ò˜W°6¼3¸v»;ÈÓKØó	ô ×#Ò#Ð$EÓFÐFä�:Š:�g¨1™~Ó.©qÐ1Ð1r   Úpublic_key_bytesc                 ó$  • [        U 5      [        :w  a  [        R                  " S5      e[        n[
        R                  " SU5      n[        R                  " X 5      n[        US:H  S[        R                  S9  [
        R                  " X!5      SS $ )z÷
Converts a public Ed25519 key (encoded as bytes ``public_key_bytes``) to
a public Curve25519 key as bytes.

Raises a ValueError if ``public_key_bytes`` is not of length
``crypto_sign_PUBLICKEYBYTES``

:param public_key_bytes: bytes
:rtype: bytes
zInvalid curve public keyr   r   r   r   N)r!   r   r   r"   r   r   r   r   Ú$crypto_sign_ed25519_pk_to_curve25519r   r   r   )r/   Úcurve_public_key_lenÚcurve_public_keyr   s       r   r1   r1   o   ó}   € ô ÐÓÔ :Ó:Ü�nŠnÐ7Ó8Ð8ä7ÐÜ—w’wÐ0Ð2FÓGÐä	×	1Ò	1Øó
€Bô ˆ2�‰7Ð.¼×8HÑ8HÒIä�:Š:Ð&Ó=¹aÐ@Ð@r   Úsecret_key_bytesc                 ó$  • [        U 5      [        :w  a  [        R                  " S5      e[        n[
        R                  " SU5      n[        R                  " X 5      n[        US:H  S[        R                  S9  [
        R                  " X!5      SS $ )zö
Converts a secret Ed25519 key (encoded as bytes ``secret_key_bytes``) to
a secret Curve25519 key as bytes.

Raises a ValueError if ``secret_key_bytes``is not of length
``crypto_sign_SECRETKEYBYTES``

:param secret_key_bytes: bytes
:rtype: bytes
zInvalid curve secret keyr   r   r   r   N)r!   r   r   r"   r   r   r   r   Ú$crypto_sign_ed25519_sk_to_curve25519r   r   r   )r5   Úcurve_secret_key_lenÚcurve_secret_keyr   s       r   r7   r7   ˆ   r4   r   c                 óf   • [        U 5      [        :w  a  [        R                  " S5      eU [        S $ )zí
Extract the public Ed25519 key from a secret Ed25519 key (encoded
as bytes ``secret_key_bytes``).

Raises a ValueError if ``secret_key_bytes``is not of length
``crypto_sign_SECRETKEYBYTES``

:param secret_key_bytes: bytes
:rtype: bytes
úInvalid secret keyN©r!   r   r   r"   r
   ©r5   s    r   Úcrypto_sign_ed25519_sk_to_pkr>   ¡   s2   € ô ÐÓÔ :Ó:Ü�nŠnÐ1Ó2Ð2àÔ1Ð2Ð3Ð3r   c                 óf   • [        U 5      [        :w  a  [        R                  " S5      eU S[         $ )zß
Extract the seed from a secret Ed25519 key (encoded
as bytes ``secret_key_bytes``).

Raises a ValueError if ``secret_key_bytes``is not of length
``crypto_sign_SECRETKEYBYTES``

:param secret_key_bytes: bytes
:rtype: bytes
r;   Nr<   r=   s    r   Úcrypto_sign_ed25519_sk_to_seedr@   ²   s2   € ô ÐÓÔ :Ó:Ü�nŠnÐ1Ó2Ð2àÐ2Ô2Ð3Ð3r   c                   ó(   • \ rS rSrSrS/rSS jrSrg)Úcrypto_sign_ed25519ph_stateéÃ   zG
State object wrapping the sha-512 state used in ed25519ph computation
ÚstateNc                 ó¼   • [         R                  " S[        5      U l        [        R
                  " U R                  5      n[        US:H  S[        R                  S9  g )Nr   r   r   r   )	r   r   r   rD   r   Úcrypto_sign_ed25519ph_initr   r   r   )Úselfr   s     r   Ú__init__Ú$crypto_sign_ed25519ph_state.__init__Ê   sE   € ÜŸGšGØÔ?ó
ˆŒ
ô ×+Ò+¨D¯J©JÓ7ˆäˆr�Q‰wÐ2¼C×<LÑ<LÓMr   )rD   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__rH   Ú__static_attributes__© r   r   rB   rB   Ã   s   † ñð �	€I÷Nr   rB   ÚedphÚpmsgNc                 ó.  • [        [        U [        5      S[        R                  S9  [        [        U[
        5      S[        R                  S9  [        R                  " U R                  U[        U5      5      n[        US:H  S[        R                  S9  g)z¿
Update the hash state wrapped in edph

:param edph: the ed25519ph state being updated
:type edph: crypto_sign_ed25519ph_state
:param pmsg: the partial message
:type pmsg: bytes
:rtype: None
ú/edph parameter must be a ed25519ph_state objectr   z%pmsg parameter must be a bytes objectr   r   N)r   Ú
isinstancerB   r   Ú	TypeErrorÚbytesr   Úcrypto_sign_ed25519ph_updaterD   r!   r   )rR   rS   r   s      r   rY   rY   Ô   st   € ô Ü�4Ô4Ó5Ø9Ü—‘òô
 Ü�4œÓØ/Ü—‘òô
 
×	)Ò	)¨$¯*©*°d¼CÀ»IÓ	F€BÜ
ˆ2�‰7Ð.¼×8HÑ8HÓIr   c                 ó"  • [        [        U [        5      S[        R                  S9  [        [        U[
        5      S[        R                  S9  [        [        U5      [        :H  SR                  [        5      [        R                  S9  [        R                  " S[        5      n[        R                  " U R                  U[        R                  U5      n[        US:H  S[        R                   S9  [        R"                  " U[        5      SS $ )	a/  
Create a signature for the data hashed in edph
using the secret key sk

:param edph: the ed25519ph state for the data
             being signed
:type edph: crypto_sign_ed25519ph_state
:param sk: the ed25519 secret key (secret and public part)
:type sk: bytes
:return: ed25519ph signature
:rtype: bytes
rU   r   z+secret key parameter must be a bytes objectz secret key must be {} bytes longr   r   r   N)r   rV   rB   r   rW   rX   r!   r   Úformatr   r   r   r   Ú"crypto_sign_ed25519ph_final_createrD   ÚNULLr   r   )rR   r   Ú	signaturer   s       r   r\   r\   î   sÕ   € ô Ü�4Ô4Ó5Ø9Ü—‘òô
 Ü�2”uÓØ5Ü—‘òô
 ÜˆB‹Ô-Ñ-Ø	+×3Ñ3Ü&ó	
ô —‘òô —’Ð)Ô+<Ó=€IÜ	×	/Ò	/Ø�
‰
�IœsŸx™x¨ó
€Bô ˆ2�‰7Ð.¼×8HÑ8HÒIä�:Š:�iÔ!2Ó3±AÐ6Ð6r   r^   c                 óX  • [        [        U [        5      S[        R                  S9  [        [        U[
        5      S[        R                  S9  [        [        U5      [        :H  SR                  [        5      [        R                  S9  [        [        U[
        5      S[        R                  S9  [        [        U5      [        :H  SR                  [        5      [        R                  S9  [        R                  " U R                  X5      nUS:w  a  [        R                  " S5      eg	)
aª  
Verify a prehashed signature using the public key pk

:param edph: the ed25519ph state for the data
             being verified
:type edph: crypto_sign_ed25519ph_state
:param signature: the signature being verified
:type signature: bytes
:param pk: the ed25519 public part of the signing key
:type pk: bytes
:return: True if the signature is valid
:rtype: boolean
:raises exc.BadSignatureError: if the signature is not valid
rU   r   z*signature parameter must be a bytes objectzsignature must be {} bytes longz+public key parameter must be a bytes objectz public key must be {} bytes longr   r+   T)r   rV   rB   r   rW   rX   r!   r   r[   r   r   Ú"crypto_sign_ed25519ph_final_verifyrD   r-   )rR   r^   r   r   s       r   r`   r`     sï   € ô" Ü�4Ô4Ó5Ø9Ü—‘òô
 Ü�9œeÓ$Ø4Ü—‘òô
 ÜˆI‹Ô+Ñ+Ø	*×2Ñ2Ô3DÓEÜ—‘òô
 Ü�2”uÓØ5Ü—‘òô
 ÜˆB‹Ô-Ñ-Ø	+×3Ñ3Ü&ó	
ô —‘òô 
×	/Ò	/°·
±
¸IÓ	J€BØ	ˆQƒwÜ×#Ò#Ð$EÓFÐFàr   )%Útypingr   Únaclr   r   Únacl._sodiumr   r   Únacl.exceptionsr   Úcrypto_sign_bytesr   ÚintÚ__annotations__Úcrypto_sign_secretkeybytesr
   Úcrypto_sign_publickeybytesr   r   Úcrypto_box_secretkeybytesr   Ú crypto_sign_ed25519ph_statebytesr   rX   r   r#   r'   r,   r1   r7   r>   r@   rB   rY   r\   Úboolr`   rQ   r   r   Ú<module>rm      s¹  ðö å "ß !Ý "ð ×.Ò.Ó0Ð �3Ó 0à ×;Ò;Ó=ÀÑBÐ �sÓ BØ"%×"@Ò"@Ó"BÐ ˜CÓ BØ"%×"@Ò"@Ó"BÐ ˜CÓ Bà$'×$AÒ$AÓ$CÐ ˜cÓ Cà(+×(LÒ(LÓ(NÐ   #Ó Nð˜U 5¨% <Ñ0ô ð$ 5ð ¨U°5¸%°<Ñ-@ô ð,0˜ð 0 Eð 0¨eô 0ð$2˜Uð 2¨ð 2°%ô 2ð*A¸5ð AÀUô Að2A¸5ð AÀUô Að24°5ð 4¸Uô 4ð"4°Uð 4¸uô 4÷"Nñ Nð"JØ
%ðJØ-2ðJà	ôJð4&7Ø
%ð&7Ø+0ð&7à
ô&7ðR0Ø
%ð0Ø27ð0Ø=Bð0à	õ0r   