ó
    &ÝNj“   ã                   ó¾   • S SK Jr  S SKrS SKJr  S SKJr  S SKJr	J
r  S SKJrJr   " S S\5      r " S	 S
\R"                  \5      r " S S\R"                  \5      rg)é    )ÚOptionalN)Úencoding)Ú
exceptions)Ú
PrivateKeyÚ	PublicKey)ÚStringFixerÚrandomc            	       ó‚   • \ rS rSr% Sr\\S'   \\S'   \S\S\S\SS 4S	 j5       r\	S\4S
 j5       r
\	S\4S j5       rSrg)ÚSignedMessageé   zV
A bytes subclass that holds a message that has been signed by a
:class:`SigningKey`.
Ú
_signatureÚ_messageÚ	signatureÚmessageÚcombinedÚreturnc                 ó.   • U " U5      nXl         X$l        U$ ©N)r   r   )Úclsr   r   r   Úobjs        ÚI/home/mande/repo/quber/.venv/lib/python3.13/site-packages/nacl/signing.pyÚ_from_partsÚSignedMessage._from_parts#   s   € ñ �(‹mˆØ"ŒØŒØˆ
ó    c                 ó   • U R                   $ )z<
The signature contained within the :class:`SignedMessage`.
)r   ©Úselfs    r   r   ÚSignedMessage.signature,   s   € ð
 �‰Ðr   c                 ó   • U R                   $ )z:
The message contained within the :class:`SignedMessage`.
)r   r   s    r   r   ÚSignedMessage.message3   s   € ð
 �}‰}Ðr   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚbytesÚ__annotations__Úclassmethodr   Úpropertyr   r   Ú__static_attributes__r!   r   r   r   r      s|   ‡ ñð
 ÓØƒOàðØðØ(-ðØ9>ðà	óó ðð ð˜5ó ó ðð ð˜ó ó ór   r   c            	       óö   • \ rS rSrSr\R                  4S\S\R                  4S jjr	S\4S jr
S\4S jrS	\S\4S
 jrS	\S\4S jrS\R                  4S\S\\   S\R                  S\4S jjrS\4S jrSrg)Ú	VerifyKeyé;   zÌ
The public key counterpart to an Ed25519 SigningKey for producing digital
signatures.

:param key: [:class:`bytes`] Serialized Ed25519 public key
:param encoder: A class that is able to decode the `key`
ÚkeyÚencoderc                 ó8  • UR                  U5      n[        U[        5      (       d  [        R                  " S5      e[        U5      [        R                  R                  :w  a1  [        R                  " S[        R                  R                  -  5      eXl
        g )Nz'VerifyKey must be created from 32 bytesz%The key must be exactly %s bytes long)ÚdecodeÚ
isinstancer'   ÚexcÚ	TypeErrorÚlenÚnaclÚbindingsÚcrypto_sign_PUBLICKEYBYTESÚ
ValueErrorÚ_key)r   r/   r0   s      r   Ú__init__ÚVerifyKey.__init__D   sr   € ð �n‰n˜SÓ!ˆÜ˜#œu×%Ñ%Ü—-’-Ð IÓJÐJäˆs‹8”t—}‘}×?Ñ?Ó?Ü—.’.Ø7Ü—-‘-×:Ñ:ñ;óð ð
 �	r   r   c                 ó   • U R                   $ r   ©r;   r   s    r   Ú	__bytes__ÚVerifyKey.__bytes__T   s   € Ø�y‰yÐr   c                 ó*   • [        [        U 5      5      $ r   ©Úhashr'   r   s    r   Ú__hash__ÚVerifyKey.__hash__W   ó   € Ü”E˜$“KÓ Ð r   Úotherc                 óœ   • [        XR                  5      (       d  g[        R                  R	                  [        U 5      [        U5      5      $ ©NF©r3   Ú	__class__r7   r8   Úsodium_memcmpr'   ©r   rH   s     r   Ú__eq__ÚVerifyKey.__eq__Z   ó3   € Ü˜%§¡×0Ñ0ØÜ�}‰}×*Ñ*¬5°«;¼¸e»ÓEÐEr   c                 ó   • X:X  + $ r   r!   rN   s     r   Ú__ne__ÚVerifyKey.__ne___   ó   € ØÒ"Ð"r   NÚsmessager   c                 óà  • Ub²  [        U[        5      (       d1  [        R                  " S[        R
                  R                  -  5      e[        U5      [        R
                  R                  :w  a1  [        R                  " S[        R
                  R                  -  5      eX#R                  U5      -   nOUR                  U5      n[        R
                  R                  XR                  5      $ )aþ  
Verifies the signature of a signed message, returning the message
if it has not been tampered with else raising
:class:`~nacl.exceptions.BadSignatureError`.

:param smessage: [:class:`bytes`] Either the original messaged or a
    signature and message concated together.
:param signature: [:class:`bytes`] If an unsigned message is given for
    smessage then the detached signature must be provided.
:param encoder: A class that is able to decode the secret message and
    signature.
:rtype: :class:`bytes`
z4Verification signature must be created from %d bytesz+The signature must be exactly %d bytes long)r3   r'   r4   r5   r7   r8   Úcrypto_sign_BYTESr6   r:   r2   Úcrypto_sign_openr;   )r   rV   r   r0   s       r   ÚverifyÚVerifyKey.verifyb   s¹   € ð& Ñ ô ˜i¬×/Ñ/Ü—m’mØJÜ—m‘m×5Ñ5ñ6óð ô
 �9‹~¤§¡×!@Ñ!@Ó@Ü—n’nØAÜ—m‘m×5Ñ5ñ6óð ð
 !§>¡>°(Ó#;Ñ;‰Hð —~‘~ hÓ/ˆHä�}‰}×-Ñ-¨h¿	¹	ÓBÐBr   c                 ój   • [         R                  R                  U R                  5      n[	        U5      $ )z{
Converts a :class:`~nacl.signing.VerifyKey` to a
:class:`~nacl.public.PublicKey`

:rtype: :class:`~nacl.public.PublicKey`
)r7   r8   Ú$crypto_sign_ed25519_pk_to_curve25519r;   Ú_Curve25519_PublicKey)r   Úraw_pks     r   Úto_curve25519_public_keyÚ"VerifyKey.to_curve25519_public_key‹   s'   € ô —‘×CÑCÀDÇIÁIÓNˆÜ$ VÓ,Ð,r   r?   )r"   r#   r$   r%   r&   r   Ú
RawEncoderr'   ÚEncoderr<   r@   ÚintrE   ÚobjectÚboolrO   rS   r   rZ   r^   r`   r+   r!   r   r   r-   r-   ;   sÄ   † ñð 7?×6IÑ6IñØðØ#+×#3Ñ#3õð ˜5ô ð!˜#ô !ðF˜Fð F tô Fð
#˜Fð # tô #ð &*Ø$,×$7Ñ$7ñ	'Càð'Cð ˜E‘?ð'Cð ×!Ñ!ð	'Cð
 
õ'CðR-Ð*?÷ -r   r-   c                   óþ   • \ rS rSrSr\R                  4S\S\R                  4S jjr	S\4S jr
S\4S jrS	\S\4S
 jrS	\S\4S jr\SS j5       r\R                  4S\S\R                  S\4S jjrS\4S jrSrg)Ú
SigningKeyé–   a©  
Private key for producing digital signatures using the Ed25519 algorithm.

Signing keys are produced from a 32-byte (256-bit) random seed value. This
value can be passed into the :class:`~nacl.signing.SigningKey` as a
:func:`bytes` whose length is 32.

.. warning:: This **must** be protected and remain secret. Anyone who knows
    the value of your :class:`~nacl.signing.SigningKey` or it's seed can
    masquerade as you.

:param seed: [:class:`bytes`] Random 32-byte value (i.e. private key)
:param encoder: A class that is able to decode the seed

:ivar: verify_key: [:class:`~nacl.signing.VerifyKey`] The verify
    (i.e. public) key that corresponds with this signing key.
Úseedr0   c                 ó¦  • UR                  U5      n[        U[        5      (       d  [        R                  " S5      e[        U5      [        R                  R                  :w  a1  [        R                  " S[        R                  R                  -  5      e[        R                  R                  U5      u  p4Xl        X@l        [        U5      U l        g )Nz.SigningKey must be created from a 32 byte seedz&The seed must be exactly %d bytes long)r2   r3   r'   r4   r5   r6   r7   r8   Úcrypto_sign_SEEDBYTESr:   Úcrypto_sign_seed_keypairÚ_seedÚ_signing_keyr-   Ú
verify_key)r   rj   r0   Ú
public_keyÚ
secret_keys        r   r<   ÚSigningKey.__init__©   s¡   € ð �~‰~˜dÓ#ˆÜ˜$¤×&Ñ&Ü—-’-Ø@óð ô
 ˆt‹9œŸ™×;Ñ;Ó;Ü—.’.Ø8Ü—-‘-×5Ñ5ñ6óð ô
 "&§¡×!GÑ!GÈÓ!MÑˆ
àŒ
Ø&ÔÜ# JÓ/ˆ�r   r   c                 ó   • U R                   $ r   )rn   r   s    r   r@   ÚSigningKey.__bytes__Â   s   € Ø�z‰zÐr   c                 ó*   • [        [        U 5      5      $ r   rC   r   s    r   rE   ÚSigningKey.__hash__Å   rG   r   rH   c                 óœ   • [        XR                  5      (       d  g[        R                  R	                  [        U 5      [        U5      5      $ rJ   rK   rN   s     r   rO   ÚSigningKey.__eq__È   rQ   r   c                 ó   • X:X  + $ r   r!   rN   s     r   rS   ÚSigningKey.__ne__Í   rU   r   c                 ón   • U " [        [        R                  R                  5      [        R
                  S9$ )zi
Generates a random :class:`~nacl.signing.SigningKey` object.

:rtype: :class:`~nacl.signing.SigningKey`
)r0   )r	   r7   r8   rl   r   rb   )r   s    r   ÚgenerateÚSigningKey.generateÐ   s,   € ñ Ü”4—=‘=×6Ñ6Ó7Ü×'Ñ'ñ
ð 	
r   r   c                 ó$  • [         R                  R                  XR                  5      n[         R                  R                  nUR                  USU 5      nUR                  X4S 5      nUR                  U5      n[        R                  XQU5      $ )zÉ
Sign a message using this key.

:param message: [:class:`bytes`] The data to be signed.
:param encoder: A class that is used to encode the signed message.
:rtype: :class:`~nacl.signing.SignedMessage`
N)r7   r8   Úcrypto_signro   rX   Úencoder   r   )r   r   r0   Ú
raw_signedrX   r   Úsigneds          r   ÚsignÚSigningKey.signÜ   sz   € ô —]‘]×.Ñ.¨w×8IÑ8IÓJˆ
ä ŸM™M×;Ñ;ÐØ—N‘N :Ð.@Ð/@Ð#AÓBˆ	Ø—.‘. Ð,>Ð!?Ó@ˆØ—‘ 
Ó+ˆä×(Ñ(¨¸VÓDÐDr   c                 ón   • U R                   n[        R                  R                  U5      n[	        U5      $ )z~
Converts a :class:`~nacl.signing.SigningKey` to a
:class:`~nacl.public.PrivateKey`

:rtype: :class:`~nacl.public.PrivateKey`
)ro   r7   r8   Ú$crypto_sign_ed25519_sk_to_curve25519Ú_Curve25519_PrivateKey)r   ÚskÚraw_privates      r   Úto_curve25519_private_keyÚ$SigningKey.to_curve25519_private_keyñ   s.   € ð ×ÑˆÜ—m‘m×HÑHÈÓLˆÜ% kÓ2Ð2r   )rn   ro   rp   N)r   rh   )r"   r#   r$   r%   r&   r   rb   r'   rc   r<   r@   rd   rE   re   rf   rO   rS   r)   r}   r   r„   rˆ   r‹   r+   r!   r   r   rh   rh   –   sÇ   † ñð* %-×$7Ñ$7ñ0àð0ð ×!Ñ!õ0ð2˜5ô ð!˜#ô !ðF˜Fð F tô Fð
#˜Fð # tô #ð ó	
ó ð	
ð %-×$7Ñ$7ñEàðEð ×!Ñ!ðEð 
õ	Eð*	3Ð+A÷ 	3r   rh   )Útypingr   Únacl.bindingsr7   r   r   r4   Únacl.publicr   rˆ   r   r^   Ú
nacl.utilsr   r	   r'   r   Ú	Encodabler-   rh   r!   r   r   Ú<module>r’      sW   ðõ ã Ý Ý "÷÷ +ô�Eô ôBX-�×"Ñ" Kô X-ôvd3�×#Ñ# [õ d3r   