U
    ¤€ljÂ/  ã                   @  sX  d dl mZ d dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZ G dd„ dejd	�Zeed
ƒrte ejj¡ G dd„ dejd	�Zeed
ƒr e ejj¡ G dd„ dejd	�Zeed
ƒrÌe ejj¡ G dd„ dejd	�Zeed
ƒrøe ejj¡ G dd„ dejd	�Zeed
ƒ�r&e ejj¡ G dd„ dejd	�Zeed
ƒ�rTe ejj¡ dS )é    )ÚannotationsN)ÚUnsupportedAlgorithmÚ_Reasons)Úopenssl)Ú_serialization)ÚBufferc                   @  s¨   e Zd Zedd dœdd„ƒZejddddœdd	„ƒZejdd
œdd„ƒZejddddddœdd„ƒZ	ejdddœdd„ƒZ
ejd d
œdd„ƒZejdd dœdd„ƒZdS ) ÚMLDSA44PublicKeyÚbytes©ÚdataÚreturnc                 C  s,   ddl m} | ¡ s tdtjƒ‚tj |¡S ©Nr   ©Úbackendz+ML-DSA-44 is not supported by this backend.)	Ú,cryptography.hazmat.backends.openssl.backendr   Úmldsa_supportedr   r   Ú UNSUPPORTED_PUBLIC_KEY_ALGORITHMÚrust_opensslÚmldsaZfrom_mldsa44_public_bytes©Úclsr   r   © r   úS/tmp/pip-unpacked-wheel-f0p8pgmk/cryptography/hazmat/primitives/asymmetric/mldsa.pyÚfrom_public_bytes   s    þz"MLDSA44PublicKey.from_public_bytesú_serialization.Encodingú_serialization.PublicFormat©ÚencodingÚformatr   c                 C  s   dS ©z9
        The serialized bytes of the public key.
        Nr   ©Úselfr   r   r   r   r   Úpublic_bytes   s    zMLDSA44PublicKey.public_bytes©r   c                 C  s   dS )z•
        The raw bytes of the public key.
        Equivalent to public_bytes(Raw, Raw).

        The public key is 1,312 bytes for MLDSA-44.
        Nr   ©r!   r   r   r   Úpublic_bytes_raw&   s    z!MLDSA44PublicKey.public_bytes_rawNr   úBuffer | NoneÚNone©Ú	signaturer   Úcontextr   c                 C  s   dS ©z'
        Verify the signature.
        Nr   ©r!   r)   r   r*   r   r   r   Úverify/   s    zMLDSA44PublicKey.verifyÚobjectÚbool©Úotherr   c                 C  s   dS ©z"
        Checks equality.
        Nr   ©r!   r1   r   r   r   Ú__eq__:   s    zMLDSA44PublicKey.__eq__c                 C  s   dS ©z!
        Returns a copy.
        Nr   r$   r   r   r   Ú__copy__@   s    zMLDSA44PublicKey.__copy__Údict©Úmemor   c                 C  s   dS ©z&
        Returns a deep copy.
        Nr   ©r!   r9   r   r   r   Ú__deepcopy__F   s    zMLDSA44PublicKey.__deepcopy__)N©Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   ÚabcÚabstractmethodr"   r%   r-   r4   r6   r<   r   r   r   r   r      s   	 ü
r   )Ú	metaclassr   c                   @  s¸   e Zd Zed dœdd„ƒZedd dœdd„ƒZejddœd	d
„ƒZejdddddœdd„ƒZ	ejddœdd„ƒZ
ejdddddœdd„ƒZejd dœdd„ƒZejdd dœdd„ƒZdS ) ÚMLDSA44PrivateKeyr#   c                 C  s*   ddl m} | ¡ s tdtjƒ‚tj ¡ S r   )	r   r   r   r   r   r   r   r   Zgenerate_mldsa44_key©r   r   r   r   r   ÚgenerateR   s    þzMLDSA44PrivateKey.generater   r
   c                 C  s,   ddl m} | ¡ s tdtjƒ‚tj |¡S r   )	r   r   r   r   r   r   r   r   Zfrom_mldsa44_seed_bytesr   r   r   r   Úfrom_seed_bytes^   s    þz!MLDSA44PrivateKey.from_seed_bytesr   c                 C  s   dS )zD
        The MLDSA44PublicKey derived from the private key.
        Nr   r$   r   r   r   Ú
public_keyj   s    zMLDSA44PrivateKey.public_keyr   ú_serialization.PrivateFormatú)_serialization.KeySerializationEncryptionr	   ©r   r   Úencryption_algorithmr   c                 C  s   dS ©z³
        The serialized bytes of the private key.

        This method only returns the serialization of the seed form of the
        private key, never the expanded one.
        Nr   ©r!   r   r   rM   r   r   r   Úprivate_bytesp   s    zMLDSA44PrivateKey.private_bytesc                 C  s   dS ©zÁ
        The raw bytes of the private key.
        Equivalent to private_bytes(Raw, Raw, NoEncryption()).

        This method only returns the seed form of the private key (32 bytes).
        Nr   r$   r   r   r   Úprivate_bytes_raw~   s    z#MLDSA44PrivateKey.private_bytes_rawNr&   ©r   r*   r   c                 C  s   dS ©z!
        Signs the data.
        Nr   ©r!   r   r*   r   r   r   Úsign‡   s    zMLDSA44PrivateKey.signc                 C  s   dS r5   r   r$   r   r   r   r6   �   s    zMLDSA44PrivateKey.__copy__r7   r8   c                 C  s   dS r:   r   r;   r   r   r   r<   “   s    zMLDSA44PrivateKey.__deepcopy__)N©r>   r?   r@   rA   rG   rH   rB   rC   rI   rP   rR   rV   r6   r<   r   r   r   r   rE   Q   s    rE   c                   @  s¨   e Zd Zedd dœdd„ƒZejddddœdd	„ƒZejdd
œdd„ƒZejddddddœdd„ƒZ	ejdddœdd„ƒZ
ejd d
œdd„ƒZejdd dœdd„ƒZdS ) ÚMLDSA65PublicKeyr	   r
   c                 C  s,   ddl m} | ¡ s tdtjƒ‚tj |¡S ©Nr   r   z+ML-DSA-65 is not supported by this backend.)	r   r   r   r   r   r   r   r   Zfrom_mldsa65_public_bytesr   r   r   r   r   Ÿ   s    þz"MLDSA65PublicKey.from_public_bytesr   r   r   c                 C  s   dS r   r   r    r   r   r   r"   «   s    zMLDSA65PublicKey.public_bytesr#   c                 C  s   dS )z•
        The raw bytes of the public key.
        Equivalent to public_bytes(Raw, Raw).

        The public key is 1,952 bytes for MLDSA-65.
        Nr   r$   r   r   r   r%   µ   s    z!MLDSA65PublicKey.public_bytes_rawNr   r&   r'   r(   c                 C  s   dS r+   r   r,   r   r   r   r-   ¾   s    zMLDSA65PublicKey.verifyr.   r/   r0   c                 C  s   dS r2   r   r3   r   r   r   r4   É   s    zMLDSA65PublicKey.__eq__c                 C  s   dS r5   r   r$   r   r   r   r6   Ï   s    zMLDSA65PublicKey.__copy__r7   r8   c                 C  s   dS r:   r   r;   r   r   r   r<   Õ   s    zMLDSA65PublicKey.__deepcopy__)Nr=   r   r   r   r   rX   ž   s   	 ü
rX   c                   @  s¸   e Zd Zed dœdd„ƒZedd dœdd„ƒZejddœd	d
„ƒZejdddddœdd„ƒZ	ejddœdd„ƒZ
ejdddddœdd„ƒZejd dœdd„ƒZejdd dœdd„ƒZdS ) ÚMLDSA65PrivateKeyr#   c                 C  s*   ddl m} | ¡ s tdtjƒ‚tj ¡ S rY   )	r   r   r   r   r   r   r   r   Zgenerate_mldsa65_keyrF   r   r   r   rG   á   s    þzMLDSA65PrivateKey.generater   r
   c                 C  s,   ddl m} | ¡ s tdtjƒ‚tj |¡S rY   )	r   r   r   r   r   r   r   r   Zfrom_mldsa65_seed_bytesr   r   r   r   rH   í   s    þz!MLDSA65PrivateKey.from_seed_bytesrX   c                 C  s   dS )zD
        The MLDSA65PublicKey derived from the private key.
        Nr   r$   r   r   r   rI   ù   s    zMLDSA65PrivateKey.public_keyr   rJ   rK   r	   rL   c                 C  s   dS rN   r   rO   r   r   r   rP   ÿ   s    zMLDSA65PrivateKey.private_bytesc                 C  s   dS rQ   r   r$   r   r   r   rR     s    z#MLDSA65PrivateKey.private_bytes_rawNr&   rS   c                 C  s   dS rT   r   rU   r   r   r   rV     s    zMLDSA65PrivateKey.signc                 C  s   dS r5   r   r$   r   r   r   r6     s    zMLDSA65PrivateKey.__copy__r7   r8   c                 C  s   dS r:   r   r;   r   r   r   r<   "  s    zMLDSA65PrivateKey.__deepcopy__)NrW   r   r   r   r   rZ   à   s    rZ   c                   @  s¨   e Zd Zedd dœdd„ƒZejddddœdd	„ƒZejdd
œdd„ƒZejddddddœdd„ƒZ	ejdddœdd„ƒZ
ejd d
œdd„ƒZejdd dœdd„ƒZdS ) ÚMLDSA87PublicKeyr	   r
   c                 C  s,   ddl m} | ¡ s tdtjƒ‚tj |¡S ©Nr   r   z+ML-DSA-87 is not supported by this backend.)	r   r   r   r   r   r   r   r   Zfrom_mldsa87_public_bytesr   r   r   r   r   .  s    þz"MLDSA87PublicKey.from_public_bytesr   r   r   c                 C  s   dS r   r   r    r   r   r   r"   :  s    zMLDSA87PublicKey.public_bytesr#   c                 C  s   dS )z•
        The raw bytes of the public key.
        Equivalent to public_bytes(Raw, Raw).

        The public key is 2,592 bytes for MLDSA-87.
        Nr   r$   r   r   r   r%   D  s    z!MLDSA87PublicKey.public_bytes_rawNr   r&   r'   r(   c                 C  s   dS r+   r   r,   r   r   r   r-   M  s    zMLDSA87PublicKey.verifyr.   r/   r0   c                 C  s   dS r2   r   r3   r   r   r   r4   X  s    zMLDSA87PublicKey.__eq__c                 C  s   dS r5   r   r$   r   r   r   r6   ^  s    zMLDSA87PublicKey.__copy__r7   r8   c                 C  s   dS r:   r   r;   r   r   r   r<   d  s    zMLDSA87PublicKey.__deepcopy__)Nr=   r   r   r   r   r[   -  s   	 ü
r[   c                   @  s¸   e Zd Zed dœdd„ƒZedd dœdd„ƒZejddœd	d
„ƒZejdddddœdd„ƒZ	ejddœdd„ƒZ
ejdddddœdd„ƒZejd dœdd„ƒZejdd dœdd„ƒZdS ) ÚMLDSA87PrivateKeyr#   c                 C  s*   ddl m} | ¡ s tdtjƒ‚tj ¡ S r\   )	r   r   r   r   r   r   r   r   Zgenerate_mldsa87_keyrF   r   r   r   rG   p  s    þzMLDSA87PrivateKey.generater   r
   c                 C  s,   ddl m} | ¡ s tdtjƒ‚tj |¡S r\   )	r   r   r   r   r   r   r   r   Zfrom_mldsa87_seed_bytesr   r   r   r   rH   |  s    þz!MLDSA87PrivateKey.from_seed_bytesr[   c                 C  s   dS )zD
        The MLDSA87PublicKey derived from the private key.
        Nr   r$   r   r   r   rI   ˆ  s    zMLDSA87PrivateKey.public_keyr   rJ   rK   r	   rL   c                 C  s   dS rN   r   rO   r   r   r   rP   Ž  s    zMLDSA87PrivateKey.private_bytesc                 C  s   dS rQ   r   r$   r   r   r   rR   œ  s    z#MLDSA87PrivateKey.private_bytes_rawNr&   rS   c                 C  s   dS rT   r   rU   r   r   r   rV   ¥  s    zMLDSA87PrivateKey.signc                 C  s   dS r5   r   r$   r   r   r   r6   «  s    zMLDSA87PrivateKey.__copy__r7   r8   c                 C  s   dS r:   r   r;   r   r   r   r<   ±  s    zMLDSA87PrivateKey.__deepcopy__)NrW   r   r   r   r   r]   o  s    r]   )Ú
__future__r   rB   Zcryptography.exceptionsr   r   Z"cryptography.hazmat.bindings._rustr   r   Zcryptography.hazmat.primitivesr   Zcryptography.utilsr   ÚABCMetar   ÚhasattrÚregisterr   rE   rX   rZ   r[   r]   r   r   r   r   Ú<module>   s.   >
I
>
I
>I