Ë
    zñ�j“   ã                   ó¾   — d dl mZ d dlZd dlmZ d dlmZ d dlmZ	m
Z d dlmZmZ  G d„ de«      Z G d	„ d
ej"                  e«      Z G d„ dej"                  e«      Zy)é    )ÚOptionalN)Úencoding)Ú
exceptions)Ú
PrivateKeyÚ	PublicKey)ÚStringFixerÚrandomc            	       ót   — e Zd ZU dZeed<   eed<   ededededd fd„«       Zedefd	„«       Z	edefd
„«       Z
y)ÚSignedMessagezb
    A bytes subclass that holds a message that has been signed by a
    :class:`SigningKey`.
    Ú
_signatureÚ_messageÚ	signatureÚmessageÚcombinedÚreturnc                 ó2   —  | |«      }||_         ||_        |S ©N)r   r   )Úclsr   r   r   Úobjs        úM/var/www/api.ozpay.ru/ozpay/venv/lib/python3.12/site-packages/nacl/signing.pyÚ_from_partszSignedMessage._from_parts#   s    € ñ �(‹mˆØ"ˆŒØˆŒØˆ
ó    c                 ó   — | j                   S )zL
        The signature contained within the :class:`SignedMessage`.
        )r   ©Úselfs    r   r   zSignedMessage.signature,   s   € ð
 �‰Ðr   c                 ó   — | j                   S )zJ
        The message contained within the :class:`SignedMessage`.
        )r   r   s    r   r   zSignedMessage.message3   s   € ð
 �}‰}Ðr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚbytesÚ__annotations__Úclassmethodr   Úpropertyr   r   © r   r   r   r      s|   … ñð
 ÓØƒOàðØðØ(-ðØ9>ðà	òó ðð ð˜5ò ó ðð ð˜ò ó ñr   r   c            	       óÜ   — e Zd ZdZej
                  fdedej                  fd„Zdefd„Z	de
fd„Zdedefd	„Zdedefd
„Zdej
                  fdedee   dej                  defd„Zdefd„Zy)Ú	VerifyKeyzà
    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                 ó*  — |j                  |«      }t        |t        «      st        j                  d«      ‚t        |«      t        j                  j                  k7  r0t        j                  dt        j                  j                  z  «      ‚|| _
        y )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(   r)   s      r   Ú__init__zVerifyKey.__init__D   sq   € ð �n‰n˜SÓ!ˆÜ˜#œuÔ%Ü—-‘-Ð IÓJÐJäˆs‹8”t—}‘}×?Ñ?Ò?Ü—.‘.Ø7Ü—-‘-×:Ñ:ñ;óð ð
 ˆ�	r   r   c                 ó   — | j                   S r   )r4   r   s    r   Ú	__bytes__zVerifyKey.__bytes__T   s   € Ø�y‰yÐr   c                 ó*   — t        t        | «      «      S r   ©Úhashr!   r   s    r   Ú__hash__zVerifyKey.__hash__W   ó   € Ü”E˜$“KÓ Ð r   Úotherc                 ó”   — t        || j                  «      syt        j                  j	                  t        | «      t        |«      «      S ©NF©r,   Ú	__class__r0   r1   Úsodium_memcmpr!   ©r   r=   s     r   Ú__eq__zVerifyKey.__eq__Z   ó2   € Ü˜% §¡Ô0ØÜ�}‰}×*Ñ*¬5°«;¼¸e»ÓEÐEr   c                 ó   — | |k(   S r   r%   rC   s     r   Ú__ne__zVerifyKey.__ne___   ó   € Ø˜E‘MÐ"Ð"r   NÚsmessager   c                 óÒ  — |�«t        |t        «      s0t        j                  dt        j
                  j                  z  «      ‚t        |«      t        j
                  j                  k7  r0t        j                  dt        j
                  j                  z  «      ‚||j                  |«      z   }n|j                  |«      }t        j
                  j                  || j                  «      S )aV  
        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)r,   r!   r-   r.   r0   r1   Úcrypto_sign_BYTESr/   r3   r+   Úcrypto_sign_openr4   )r   rI   r   r)   s       r   ÚverifyzVerifyKey.verifyb   sº   € ð& Ð ô ˜i¬Ô/Ü—m‘mØJÜ—m‘m×5Ñ5ñ6óð ô
 �9‹~¤§¡×!@Ñ!@Ò@Ü—n‘nØAÜ—m‘m×5Ñ5ñ6óð ð
 ! 7§>¡>°(Ó#;Ñ;‰Hð —~‘~ hÓ/ˆHä�}‰}×-Ñ-¨h¸¿	¹	ÓBÐBr   c                 ój   — t         j                  j                  | j                  «      }t	        |«      S )z›
        Converts a :class:`~nacl.signing.VerifyKey` to a
        :class:`~nacl.public.PublicKey`

        :rtype: :class:`~nacl.public.PublicKey`
        )r0   r1   Ú$crypto_sign_ed25519_pk_to_curve25519r4   Ú_Curve25519_PublicKey)r   Úraw_pks     r   Úto_curve25519_public_keyz"VerifyKey.to_curve25519_public_key‹   s'   € ô —‘×CÑCÀDÇIÁIÓNˆÜ$ VÓ,Ð,r   )r   r   r   r    r   Ú
RawEncoderr!   ÚEncoderr5   r7   Úintr;   ÚobjectÚboolrD   rG   r   rM   rP   rR   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                   óâ   — e Zd ZdZej
                  fdedej                  fd„Zdefd„Z	de
fd„Zdedefd	„Zdedefd
„Zedd„«       Zej
                  fdedej                  defd„Zdefd„Zy)Ú
SigningKeyaÙ  
    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.
    Úseedr)   c                 óœ  — |j                  |«      }t        |t        «      st        j                  d«      ‚t        |«      t        j                  j                  k7  r0t        j                  dt        j                  j                  z  «      ‚t        j                  j                  |«      \  }}|| _        || _        t        |«      | _        y )Nz.SigningKey must be created from a 32 byte seedz&The seed must be exactly %d bytes long)r+   r,   r!   r-   r.   r/   r0   r1   Úcrypto_sign_SEEDBYTESr3   Úcrypto_sign_seed_keypairÚ_seedÚ_signing_keyr'   Ú
verify_key)r   rZ   r)   Ú
public_keyÚ
secret_keys        r   r5   zSigningKey.__init__©   s¤   € ð �~‰~˜dÓ#ˆÜ˜$¤Ô&Ü—-‘-Ø@óð ô
 ˆt‹9œŸ™×;Ñ;Ò;Ü—.‘.Ø8Ü—-‘-×5Ñ5ñ6óð ô
 "&§¡×!GÑ!GÈÓ!MÑˆ
�JàˆŒ
Ø&ˆÔÜ# JÓ/ˆ�r   r   c                 ó   — | j                   S r   )r^   r   s    r   r7   zSigningKey.__bytes__Â   s   € Ø�z‰zÐr   c                 ó*   — t        t        | «      «      S r   r9   r   s    r   r;   zSigningKey.__hash__Å   r<   r   r=   c                 ó”   — t        || j                  «      syt        j                  j	                  t        | «      t        |«      «      S r?   r@   rC   s     r   rD   zSigningKey.__eq__È   rE   r   c                 ó   — | |k(   S r   r%   rC   s     r   rG   zSigningKey.__ne__Í   rH   r   c                 ót   —  | t        t        j                  j                  «      t        j
                  ¬«      S )z�
        Generates a random :class:`~nacl.signing.SigningKey` object.

        :rtype: :class:`~nacl.signing.SigningKey`
        )r)   )r	   r0   r1   r\   r   rS   )r   s    r   ÚgeneratezSigningKey.generateÐ   s,   € ñ Ü”4—=‘=×6Ñ6Ó7Ü×'Ñ'ô
ð 	
r   r   c                 ó*  — t         j                  j                  || j                  «      }t         j                  j                  }|j                  |d| «      }|j                  ||d «      }|j                  |«      }t        j                  |||«      S )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)r0   r1   Úcrypto_signr_   rK   Úencoder   r   )r   r   r)   Ú
raw_signedrK   r   Úsigneds          r   ÚsignzSigningKey.signÜ   s�   € ô —]‘]×.Ñ.¨w¸×8IÑ8IÓJˆ
ä ŸM™M×;Ñ;ÐØ—N‘N :Ð.@Ð/@Ð#AÓBˆ	Ø—.‘. Ð,=Ð,>Ð!?Ó@ˆØ—‘ 
Ó+ˆä×(Ñ(¨°G¸VÓDÐDr   c                 ón   — | j                   }t        j                  j                  |«      }t	        |«      S )zž
        Converts a :class:`~nacl.signing.SigningKey` to a
        :class:`~nacl.public.PrivateKey`

        :rtype: :class:`~nacl.public.PrivateKey`
        )r_   r0   r1   Ú$crypto_sign_ed25519_sk_to_curve25519Ú_Curve25519_PrivateKey)r   ÚskÚraw_privates      r   Úto_curve25519_private_keyz$SigningKey.to_curve25519_private_keyñ   s.   € ð ×ÑˆÜ—m‘m×HÑHÈÓLˆÜ% kÓ2Ð2r   N)r   rY   )r   r   r   r    r   rS   r!   rT   r5   r7   rU   r;   rV   rW   rD   rG   r#   rh   r   rn   rq   rt   r%   r   r   rY   rY   –   sÇ   „ ñð* %-×$7Ñ$7ñ0àð0ð ×!Ñ!ó0ð2˜5ó ð!˜#ó !ðF˜Fð F tó Fð
#˜Fð # tó #ð ò	
ó ð	
ð %-×$7Ñ$7ñEàðEð ×!Ñ!ðEð 
ó	Eð*	3Ð+Aô 	3r   rY   )Útypingr   Únacl.bindingsr0   r   r   r-   Únacl.publicr   rq   r   rP   Ú
nacl.utilsr   r	   r!   r   Ú	Encodabler'   rY   r%   r   r   ú<module>rz      sW   ðõ ã Ý Ý "÷÷ +ô�Eô ôBX-�×"Ñ" Kô X-ôvd3�×#Ñ# [õ d3r   