
    Dj5                    F   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ej        	          Z eed
          re                    ej        j                    G d dej        	          Z eed
          re                    ej        j                    G d dej        	          Z eed
          re                    ej        j                    G d dej        	          Z eed
          re                    ej        j                    G d dej        	          Z eed
          re                    ej        j                    G d dej        	          Z eed
          r!e                    ej        j                   dS dS )    )annotationsN)UnsupportedAlgorithm_Reasons)openssl)_serialization)Bufferc                     e Zd Zedd            Zej        dd	            Zej        dd
            Zej        	 dd d            Z	ej        d!d            Z
ej        d"d            Zej        d#d            Zej        d$d            ZdS )%MLDSA44PublicKeydatabytesreturnc                    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mldsafrom_mldsa44_public_bytesclsr   r   s      j/home/thesage/.hermes/venv/lib/python3.11/site-packages/cryptography/hazmat/primitives/asymmetric/mldsa.pyfrom_public_bytesz"MLDSA44PublicKey.from_public_bytes   \    HHHHHH&&(( 	&=9  
 !;;DAAA    encoding_serialization.Encodingformat_serialization.PublicFormatc                    dS z9
        The serialized bytes of the public key.
        N selfr   r    s      r   public_byteszMLDSA44PublicKey.public_bytes         r   c                    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&   s    r   public_bytes_rawz!MLDSA44PublicKey.public_bytes_raw&   r(   r   N	signaturer   contextBuffer | NoneNonec                    dS z'
        Verify the signature.
        Nr$   r&   r,   r   r-   s       r   verifyzMLDSA44PublicKey.verify/   r(   r   muc                    dS zt
        Verify the signature over a precomputed mu (message representative).

        mu must be 64 bytes.
        Nr$   r&   r,   r4   s      r   	verify_muzMLDSA44PublicKey.verify_mu:   r(   r   otherobjectboolc                    dS z"
        Checks equality.
        Nr$   r&   r9   s     r   __eq__zMLDSA44PublicKey.__eq__F   r(   r   c                    dS z!
        Returns a copy.
        Nr$   r*   s    r   __copy__zMLDSA44PublicKey.__copy__L   r(   r   memodictc                    dS z&
        Returns a deep copy.
        Nr$   r&   rC   s     r   __deepcopy__zMLDSA44PublicKey.__deepcopy__R   r(   r   )r   r   r   r
   r   r   r    r!   r   r   r   r   Nr,   r   r   r   r-   r.   r   r/   r,   r   r4   r   r   r/   r9   r:   r   r;   r   r
   )rC   rD   r   r
   __name__
__module____qualname__classmethodr   abcabstractmethodr'   r+   r3   r8   r?   rB   rH   r$   r   r   r
   r
      <       	B 	B 	B [	B 	    	    	
 "&	     		 	 	 	 	   
 	   
 	     r   r
   )	metaclassr   c                  .   e Zd Zedd            Zedd            Zej        dd            Zej        dd            Z	ej        dd            Z
ej        d d!d            Zej        d"d            Zej        dd            Zej        d#d            ZdS )$MLDSA44PrivateKeyr   c                    ddl m} |                                st          dt          j                  t          j                                        S r   )	r   r   r   r   r   r   r   r   generate_mldsa44_keyr   r   s     r   generatezMLDSA44PrivateKey.generate^   Z    HHHHHH&&(( 	&=9  
 !66888r   r   r   c                    ddl m} |                                st          dt          j                  t          j                            |          S r   )	r   r   r   r   r   r   r   r   from_mldsa44_seed_bytesr   s      r   from_seed_bytesz!MLDSA44PrivateKey.from_seed_bytesj   \    HHHHHH&&(( 	&=9  
 !99$???r   r
   c                    dS )zD
        The MLDSA44PublicKey derived from the private key.
        Nr$   r*   s    r   
public_keyzMLDSA44PrivateKey.public_keyv   r(   r   r   r   r    _serialization.PrivateFormatencryption_algorithm)_serialization.KeySerializationEncryptionr   c                    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    rg   s       r   private_byteszMLDSA44PrivateKey.private_bytes|   r(   r   c                    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*   s    r   private_bytes_rawz#MLDSA44PrivateKey.private_bytes_raw   r(   r   Nr-   r.   c                    dS z!
        Signs the data.
        Nr$   r&   r   r-   s      r   signzMLDSA44PrivateKey.sign   r(   r   r4   c                    dS z
        Signs a precomputed mu (message representative).

        mu must be 64 bytes and already incorporates the context, so no
        context is accepted here.
        Nr$   r&   r4   s     r   sign_muzMLDSA44PrivateKey.sign_mu   r(   r   c                    dS rA   r$   r*   s    r   rB   zMLDSA44PrivateKey.__copy__   r(   r   rC   rD   c                    dS rF   r$   rG   s     r   rH   zMLDSA44PrivateKey.__deepcopy__   r(   r   )r   rZ   )r   r   r   rZ   rO   r   r   r    rf   rg   rh   r   r   rJ   rK   r   r   r-   r.   r   r   r4   r   r   r   )rC   rD   r   rZ   rQ   rR   rS   rT   r^   rb   rU   rV   re   rl   ro   rs   rw   rB   rH   r$   r   r   rZ   rZ   ]   W       	9 	9 	9 [	9 	@ 	@ 	@ [	@ 	   
 	    	    	    
 	    	   
 	     r   rZ   c                     e Zd Zedd            Zej        dd	            Zej        dd
            Zej        	 dd d            Z	ej        d!d            Z
ej        d"d            Zej        d#d            Zej        d$d            ZdS )%MLDSA65PublicKeyr   r   r   c                    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   from_mldsa65_public_bytesr   s      r   r   z"MLDSA65PublicKey.from_public_bytes   r   r   r   r   r    r!   c                    dS r#   r$   r%   s      r   r'   zMLDSA65PublicKey.public_bytes   r(   r   c                    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*   s    r   r+   z!MLDSA65PublicKey.public_bytes_raw   r(   r   Nr,   r   r-   r.   r/   c                    dS r1   r$   r2   s       r   r3   zMLDSA65PublicKey.verify   r(   r   r4   c                    dS r6   r$   r7   s      r   r8   zMLDSA65PublicKey.verify_mu   r(   r   r9   r:   r;   c                    dS r=   r$   r>   s     r   r?   zMLDSA65PublicKey.__eq__   r(   r   c                    dS rA   r$   r*   s    r   rB   zMLDSA65PublicKey.__copy__   r(   r   rC   rD   c                    dS rF   r$   rG   s     r   rH   zMLDSA65PublicKey.__deepcopy__   r(   r   )r   r   r   r   rI   rJ   rK   rL   rM   rN   r   r   )rC   rD   r   r   rP   r$   r   r   r   r      rW   r   r   c                  .   e Zd Zedd            Zedd            Zej        dd            Zej        dd            Z	ej        dd            Z
ej        d d!d            Zej        d"d            Zej        dd            Zej        d#d            ZdS )$MLDSA65PrivateKeyr   c                    ddl m} |                                st          dt          j                  t          j                                        S r   )	r   r   r   r   r   r   r   r   generate_mldsa65_keyr]   s     r   r^   zMLDSA65PrivateKey.generate  r_   r   r   r   c                    ddl m} |                                st          dt          j                  t          j                            |          S r   )	r   r   r   r   r   r   r   r   from_mldsa65_seed_bytesr   s      r   rb   z!MLDSA65PrivateKey.from_seed_bytes  rc   r   r   c                    dS )zD
        The MLDSA65PublicKey derived from the private key.
        Nr$   r*   s    r   re   zMLDSA65PrivateKey.public_key  r(   r   r   r   r    rf   rg   rh   r   c                    dS rj   r$   rk   s       r   rl   zMLDSA65PrivateKey.private_bytes   r(   r   c                    dS rn   r$   r*   s    r   ro   z#MLDSA65PrivateKey.private_bytes_raw.  r(   r   Nr-   r.   c                    dS rq   r$   rr   s      r   rs   zMLDSA65PrivateKey.sign7  r(   r   r4   c                    dS ru   r$   rv   s     r   rw   zMLDSA65PrivateKey.sign_mu=  r(   r   c                    dS rA   r$   r*   s    r   rB   zMLDSA65PrivateKey.__copy__F  r(   r   rC   rD   c                    dS rF   r$   rG   s     r   rH   zMLDSA65PrivateKey.__deepcopy__L  r(   r   )r   r   )r   r   r   r   r   rz   rJ   rK   r{   r|   )rC   rD   r   r   r}   r$   r   r   r   r     r~   r   r   c                     e Zd Zedd            Zej        dd	            Zej        dd
            Zej        	 dd d            Z	ej        d!d            Z
ej        d"d            Zej        d#d            Zej        d$d            ZdS )%MLDSA87PublicKeyr   r   r   c                    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   from_mldsa87_public_bytesr   s      r   r   z"MLDSA87PublicKey.from_public_bytesX  r   r   r   r   r    r!   c                    dS r#   r$   r%   s      r   r'   zMLDSA87PublicKey.public_bytesd  r(   r   c                    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*   s    r   r+   z!MLDSA87PublicKey.public_bytes_rawn  r(   r   Nr,   r   r-   r.   r/   c                    dS r1   r$   r2   s       r   r3   zMLDSA87PublicKey.verifyw  r(   r   r4   c                    dS r6   r$   r7   s      r   r8   zMLDSA87PublicKey.verify_mu  r(   r   r9   r:   r;   c                    dS r=   r$   r>   s     r   r?   zMLDSA87PublicKey.__eq__  r(   r   c                    dS rA   r$   r*   s    r   rB   zMLDSA87PublicKey.__copy__  r(   r   rC   rD   c                    dS rF   r$   rG   s     r   rH   zMLDSA87PublicKey.__deepcopy__  r(   r   )r   r   r   r   rI   rJ   rK   rL   rM   rN   r   r   )rC   rD   r   r   rP   r$   r   r   r   r   W  rW   r   r   c                  .   e Zd Zedd            Zedd            Zej        dd            Zej        dd            Z	ej        dd            Z
ej        d d!d            Zej        d"d            Zej        dd            Zej        d#d            ZdS )$MLDSA87PrivateKeyr   c                    ddl m} |                                st          dt          j                  t          j                                        S r   )	r   r   r   r   r   r   r   r   generate_mldsa87_keyr]   s     r   r^   zMLDSA87PrivateKey.generate  r_   r   r   r   c                    ddl m} |                                st          dt          j                  t          j                            |          S r   )	r   r   r   r   r   r   r   r   from_mldsa87_seed_bytesr   s      r   rb   z!MLDSA87PrivateKey.from_seed_bytes  rc   r   r   c                    dS )zD
        The MLDSA87PublicKey derived from the private key.
        Nr$   r*   s    r   re   zMLDSA87PrivateKey.public_key  r(   r   r   r   r    rf   rg   rh   r   c                    dS rj   r$   rk   s       r   rl   zMLDSA87PrivateKey.private_bytes  r(   r   c                    dS rn   r$   r*   s    r   ro   z#MLDSA87PrivateKey.private_bytes_raw  r(   r   Nr-   r.   c                    dS rq   r$   rr   s      r   rs   zMLDSA87PrivateKey.sign  r(   r   r4   c                    dS ru   r$   rv   s     r   rw   zMLDSA87PrivateKey.sign_mu  r(   r   c                    dS rA   r$   r*   s    r   rB   zMLDSA87PrivateKey.__copy__  r(   r   rC   rD   c                    dS rF   r$   rG   s     r   rH   zMLDSA87PrivateKey.__deepcopy__  r(   r   )r   r   )r   r   r   r   r   rz   rJ   rK   r{   r|   )rC   rD   r   r   r}   r$   r   r   r   r     r~   r   r   )
__future__r   rU   cryptography.exceptionsr   r   "cryptography.hazmat.bindings._rustr   r   cryptography.hazmat.primitivesr   cryptography.utilsr   ABCMetar
   hasattrregisterr   rZ   r   r   r   r   r$   r   r   <module>r      s
  
 # " " " " " 



 B B B B B B B B F F F F F F 9 9 9 9 9 9 % % % % % %G G G G G G G G GT 7<!! Cl0ABBBO O O O O#+ O O O Od 7<!! E|1CDDDG G G G G G G G GT 7<!! Cl0ABBBO O O O O#+ O O O Od 7<!! E|1CDDDG G G G G G G G GT 7<!! Cl0ABBBO O O O O#+ O O O Od 7<!! E|1CDDDDDE Er   