§
    &xÅj²)  ã                   ó0  — 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        ¦   «         dz  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<   deeef         fd„Zdedeeef         fd„Zdededefd„Zdededefd„Zdedefd„Zdedefd„Zdedefd„Zdedefd„Z G d„ d¦  «        Z de dedd fd!„Z!de dedefd"„Z"de d#edede#fd$„Z$d S )%é    )Ú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                  ó\  — 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 )zu
    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      úJC:\Projects\Historical\venv\Lib\site-packages\nacl/bindings/crypto_sign.pyr   r       s—   € õ 
ŒÐ"Õ$>Ñ	?Ô	?€BÝ	ŒÐ"Õ$>Ñ	?Ô	?€Bå	Ô	   RÑ	(Ô	(€BÝ
ˆ2�Š7Ð.½Ô8HÐIÑIÔIÐIõ 	Œ
�2Õ1Ñ2Ô2°1°1°1Ô5ÝŒ
�2Õ1Ñ2Ô2°1°1°1Ô5ðð ó    Úseedc                 ó¶  — t          | ¦  «        t          k    rt          j        d¦  «        ‚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 
    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„yÕ)Ò)Ð)ÝŒn˜^Ñ,Ô,Ð,å	ŒÐ"Õ$>Ñ	?Ô	?€BÝ	ŒÐ"Õ$>Ñ	?Ô	?€Bå	Ô	% b¨"¨dÑ	3Ô	3€BÝ
ˆ2�Š7Ð.½Ô8HÐIÑIÔIÐIõ 	Œ
�2Õ1Ñ2Ô2°1°1°1Ô5ÝŒ
�2Õ1Ñ2Ô2°1°1°1Ô5ðð r   Úmessager   c                 óN  — t          j        dt          | ¦  «        t          z   ¦  «        }t          j        d¦  «        }t	          j        ||| t          | ¦  «        |¦  «        }t          |dk    dt          j        ¬¦  «         t          j	        ||d         ¦  «        dd…         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   s‹   € õ ŒWÐ&­¨G©¬Õ7HÑ(HÑIÔI€FÝ”Ð/Ñ0Ô0€Jå	Œ˜ ¨Wµc¸'±l´lÀBÑ	GÔ	G€BÝ
ˆ2�Š7Ð.½Ô8HÐIÑIÔIÐIåŒ:�f˜j¨œmÑ,Ô,¨Q¨Q¨QÔ/Ð/r   r(   r   c                 ó.  — t          j        dt          | ¦  «        ¦  «        }t          j        d¦  «        }t          j        ||| t          | ¦  «        |¦  «        dk    rt          j        d¦  «        ‚t          j        ||d         ¦  «        dd…         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   sŠ   € õ ŒgÐ'­¨V©¬Ñ5Ô5€GÝ”'Ð0Ñ1Ô1€Kõ 	Ô˜W k°6½3¸v¹;¼;ÈÑKÔKØò	ð 	õ Ô#Ð$EÑFÔFÐFåŒ:�g˜{¨1œ~Ñ.Ô.¨q¨q¨qÔ1Ð1r   Úpublic_key_bytesc                 ó6  — t          | ¦  «        t          k    rt          j        d¦  «        ‚t          }t          j        d|¦  «        }t          j        || ¦  «        }t          |dk    dt          j
        ¬¦  «         t          j        ||¦  «        dd…         S )a  
    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Ð7Ñ8Ô8Ð8å7ÐÝ”wÐ0Ð2FÑGÔGÐå	Ô	1ØÐ*ñ
ô 
€Bõ ˆ2�Š7Ð.½Ô8HÐIÑIÔIÐIåŒ:Ð&Ð(<Ñ=Ô=¸a¸a¸aÔ@Ð@r   Úsecret_key_bytesc                 ó6  — t          | ¦  «        t          k    rt          j        d¦  «        ‚t          }t          j        d|¦  «        }t          j        || ¦  «        }t          |dk    dt          j
        ¬¦  «         t          j        ||¦  «        dd…         S )a  
    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                 óx   — t          | ¦  «        t          k    rt          j        d¦  «        ‚| t          d…         S )a	  
    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>   ¡   s<   € õ ÐÑÔÕ :Ò:Ð:ÝŒnÐ1Ñ2Ô2Ð2àÕ1Ð2Ð2Ô3Ð3r   c                 óx   — t          | ¦  «        t          k    rt          j        d¦  «        ‚| dt          …         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@   ²   s<   € õ ÐÑÔÕ :Ò:Ð:ÝŒnÐ1Ñ2Ô2Ð2àÐ2Õ2Ð2Ô3Ð3r   c                   ó    — e Zd ZdZdgZdd„ZdS )Úcrypto_sign_ed25519ph_statezO
    State object wrapping the sha-512 state used in ed25519ph computation
    Ústater   Nc                 ó¶   — t          j        dt          ¦  «        | _        t	          j        | j        ¦  «        }t          |dk    dt          j        ¬¦  «         d S )Nr   r   r   r   )	r   r   r   rC   r   Úcrypto_sign_ed25519ph_initr   r   r   )Úselfr   s     r   Ú__init__z$crypto_sign_ed25519ph_state.__init__Ê   sR   € ÝœGØÕ?ñ
ô 
ˆŒ
õ Ô+¨D¬JÑ7Ô7ˆåˆr�QŠwÐ2½CÔ<LÐMÑMÔMÐMÐMÐMr   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__rG   © r   r   rB   rB   Ã   sA   € € € € € ðð ð �	€IðNð Nð Nð Nð Nð Nr   rB   ÚedphÚpmsgNc                 óR  — t          t          | t          ¦  «        dt          j        ¬¦  «         t          t          |t
          ¦  «        dt          j        ¬¦  «         t          j        | j        |t          |¦  «        ¦  «        }t          |dk    dt          j
        ¬¦  «         dS )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_updaterC   r!   r   )rN   rO   r   s      r   rU   rU   Ô   s    € õ Ý�4Õ4Ñ5Ô5Ø9Ý”ðñ ô ð õ
 Ý�4�ÑÔØ/Ý”ðñ ô ð õ
 
Ô	)¨$¬*°d½CÀ¹I¼IÑ	FÔ	F€BÝ
ˆ2�Š7Ð.½Ô8HÐIÑIÔIÐIÐIÐIr   c                 óV  — t          t          | t          ¦  «        dt          j        ¬¦  «         t          t          |t
          ¦  «        dt          j        ¬¦  «         t          t          |¦  «        t          k    d                     t          ¦  «        t          j        ¬¦  «         t          j
        dt          ¦  «        }t          j        | j        |t          j        |¦  «        }t          |dk    dt          j        ¬¦  «         t          j        |t          ¦  «        dd…         S )	aW  
    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
    rQ   r   z+secret key parameter must be a bytes objectz secret key must be {} bytes longr   r   r   N)r   rR   rB   r   rS   rT   r!   r   Úformatr   r   r   r   Ú"crypto_sign_ed25519ph_final_createrC   ÚNULLr   r   )rN   r   Ú	signaturer   s       r   rX   rX   î   s  € õ Ý�4Õ4Ñ5Ô5Ø9Ý”ðñ ô ð õ
 Ý�2•uÑÔØ5Ý”ðñ ô ð õ
 ÝˆB‰ŒÕ-Ò-Ø	+×3Ò3Ý&ñ	
ô 	
õ ”ðñ ô ð õ ”Ð)Õ+<Ñ=Ô=€IÝ	Ô	/ØŒ
�I�sœx¨ñ
ô 
€Bõ ˆ2�Š7Ð.½Ô8HÐIÑIÔIÐIåŒ:�iÕ!2Ñ3Ô3°A°A°AÔ6Ð6r   rZ   c                 ó²  — t          t          | t          ¦  «        dt          j        ¬¦  «         t          t          |t
          ¦  «        dt          j        ¬¦  «         t          t          |¦  «        t          k    d                     t          ¦  «        t          j        ¬¦  «         t          t          |t
          ¦  «        dt          j        ¬¦  «         t          t          |¦  «        t          k    d                     t          ¦  «        t          j        ¬¦  «         t          j        | j        ||¦  «        }|dk    rt          j        d¦  «        ‚d	S )
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
    rQ   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   rR   rB   r   rS   rT   r!   r   rW   r   r   Ú"crypto_sign_ed25519ph_final_verifyrC   r-   )rN   rZ   r   r   s       r   r\   r\     sI  € õ" Ý�4Õ4Ñ5Ô5Ø9Ý”ðñ ô ð õ
 Ý�9�eÑ$Ô$Ø4Ý”ðñ ô ð õ
 ÝˆI‰ŒÕ+Ò+Ø	*×2Ò2Õ3DÑEÔEÝ”ðñ ô ð õ
 Ý�2•uÑÔØ5Ý”ðñ ô ð õ
 ÝˆB‰ŒÕ-Ò-Ø	+×3Ò3Ý&ñ	
ô 	
õ ”ðñ ô ð õ 
Ô	/°´
¸IÀrÑ	JÔ	J€BØ	ˆQ‚w€wÝÔ#Ð$EÑFÔFÐFàˆ4r   )%Ú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   rT   r   r#   r'   r,   r1   r7   r>   r@   rB   rU   rX   Úboolr\   rM   r   r   ú<module>ri      s
  ðð Ð Ð Ð Ð Ð Ð à "Ð "Ð "Ð "Ð "Ð "Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ø "Ð "Ð "Ð "Ð "Ð "ð /˜Ô.Ñ0Ô0Ð �3Ð 0Ð 0Ñ 0à;˜SÔ;Ñ=Ô=ÀÑBÐ �sÐ BÐ BÑ BØ"@ #Ô"@Ñ"BÔ"BÐ ˜CÐ BÐ BÑ BØ"@ #Ô"@Ñ"BÔ"BÐ ˜CÐ BÐ BÑ Bà$A CÔ$AÑ$CÔ$CÐ ˜cÐ CÐ CÑ Cà(L¨Ô(LÑ(NÔ(NÐ   #Ð NÐ NÑ Nð˜U 5¨% <Ô0ð ð ð ð ð$ 5ð ¨U°5¸%°<Ô-@ð ð ð ð ð,0˜ð 0 Eð 0¨eð 0ð 0ð 0ð 0ð$2˜Uð 2¨ð 2°%ð 2ð 2ð 2ð 2ð*A¸5ð AÀUð Að Að Að Að2A¸5ð AÀUð Að Að Að Að24°5ð 4¸Uð 4ð 4ð 4ð 4ð"4°Uð 4¸uð 4ð 4ð 4ð 4ð"Nð Nð Nð Nð Nñ Nô Nð Nð"JØ
%ðJØ-2ðJà	ðJð Jð Jð Jð4&7Ø
%ð&7Ø+0ð&7à
ð&7ð &7ð &7ð &7ðR0Ø
%ð0Ø27ð0Ø=Bð0à	ð0ð 0ð 0ð 0ð 0ð 0r   