U
    /j/                     @  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
reejj G dd dejd	Zeed
reejj G dd dejd	Zeed
re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-qzbw3lpx/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