
    : j                    J   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                   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            Z	ej        dd            Z
ej        dd            Zej        dd            ZdS )MLKEM768PublicKeydatar   returnc                    ddl m} |                                st          dt          j                  t          j                            |          S Nr   backendz,ML-KEM-768 is not supported by this backend.)	,cryptography.hazmat.backends.openssl.backendr   mlkem_supportedr   r    UNSUPPORTED_PUBLIC_KEY_ALGORITHMrust_opensslmlkemfrom_mlkem768_public_bytesclsr   r   s      C:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\cryptography/hazmat/primitives/asymmetric/mlkem.pyfrom_public_bytesz#MLKEM768PublicKey.from_public_bytes   s\    HHHHHH&&(( 	&>9  
 !<<TBBB    tuple[bytes, bytes]c                    dS zC
        Encapsulate: returns (shared_secret, ciphertext).
        N selfs    r   encapsulatezMLKEM768PublicKey.encapsulate         r   encoding_serialization.Encodingformat_serialization.PublicFormatbytesc                    dS z9
        The serialized bytes of the public key.
        Nr   r!   r$   r&   s      r   public_byteszMLKEM768PublicKey.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,184 bytes for ML-KEM-768.
        Nr   r    s    r   public_bytes_rawz"MLKEM768PublicKey.public_bytes_raw,   r#   r   otherobjectboolc                    dS z"
        Checks equality.
        Nr   r!   r/   s     r   __eq__zMLKEM768PublicKey.__eq__5   r#   r   c                    dS z!
        Returns a copy.
        Nr   r    s    r   __copy__zMLKEM768PublicKey.__copy__;   r#   r   memodictc                    dS z&
        Returns a deep copy.
        Nr   r!   r9   s     r   __deepcopy__zMLKEM768PublicKey.__deepcopy__A   r#   r   N)r   r   r   r
   r   r   r$   r%   r&   r'   r   r(   r   r(   r/   r0   r   r1   r   r
   )r9   r:   r   r
   __name__
__module____qualname__classmethodr   abcabstractmethodr"   r,   r.   r5   r8   r>   r   r   r   r
   r
      s       	C 	C 	C [	C 	   
 	    	    	   
 	   
 	     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            Zej        dd            Zej        dd            ZdS )MLKEM768PrivateKeyr   c                    ddl m} |                                st          dt          j                  t          j                                        S r   )	r   r   r   r   r   r   r   r   generate_mlkem768_keyr   r   s     r   generatezMLKEM768PrivateKey.generateM   sZ    HHHHHH&&(( 	&>9  
 !77999r   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_mlkem768_seed_bytesr   s      r   from_seed_bytesz"MLKEM768PrivateKey.from_seed_bytesY   s\    HHHHHH&&(( 	&>9  
 !::4@@@r   
ciphertextr(   c                    dS z5
        Decapsulate: returns shared_secret.
        Nr   r!   rU   s     r   decapsulatezMLKEM768PrivateKey.decapsulatee   r#   r   r
   c                    dS )zF
        The MLKEM768PublicKey derived from this private key.
        Nr   r    s    r   
public_keyzMLKEM768PrivateKey.public_keyk   r#   r   r$   r%   r&   _serialization.PrivateFormatencryption_algorithm)_serialization.KeySerializationEncryptionc                    dS z:
        The serialized bytes of the private key.
        Nr   r!   r$   r&   r]   s       r   private_bytesz MLKEM768PrivateKey.private_bytesq   r#   r   c                    dS z
        The raw bytes of the private key (64-byte seed).
        Equivalent to private_bytes(Raw, Raw, NoEncryption()).
        Nr   r    s    r   private_bytes_rawz$MLKEM768PrivateKey.private_bytes_raw|   r#   r   c                    dS r7   r   r    s    r   r8   zMLKEM768PrivateKey.__copy__   r#   r   r9   r:   c                    dS r<   r   r=   s     r   r>   zMLKEM768PrivateKey.__deepcopy__   r#   r   N)r   rM   )r   r   r   rM   rU   r   r   r(   rC   r$   r%   r&   r\   r]   r^   r   r(   rA   )r9   r:   r   rM   rE   rF   rG   rH   rQ   rT   rI   rJ   rY   r[   rb   re   r8   r>   r   r   r   rM   rM   L   s.       	: 	: 	: [	: 	A 	A 	A [	A 	   
 	   
 	    	    	   
 	     r   rM   c                      e Z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            Z
ej        dd            Zej        dd            ZdS )MLKEM1024PublicKeyr   r   r   c                    ddl m} |                                st          dt          j                  t          j                            |          S Nr   r   z-ML-KEM-1024 is not supported by this backend.)	r   r   r   r   r   r   r   r   from_mlkem1024_public_bytesr   s      r   r   z$MLKEM1024PublicKey.from_public_bytes   s\    HHHHHH&&(( 	&?9  
 !==dCCCr   r   c                    dS r   r   r    s    r   r"   zMLKEM1024PublicKey.encapsulate   r#   r   r$   r%   r&   r'   r(   c                    dS r*   r   r+   s      r   r,   zMLKEM1024PublicKey.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,568 bytes for ML-KEM-1024.
        Nr   r    s    r   r.   z#MLKEM1024PublicKey.public_bytes_raw   r#   r   r/   r0   r1   c                    dS r3   r   r4   s     r   r5   zMLKEM1024PublicKey.__eq__   r#   r   c                    dS r7   r   r    s    r   r8   zMLKEM1024PublicKey.__copy__   r#   r   r9   r:   c                    dS r<   r   r=   s     r   r>   zMLKEM1024PublicKey.__deepcopy__   r#   r   N)r   r   r   rl   r?   r@   rA   rB   r   rl   )r9   r:   r   rl   rD   r   r   r   rl   rl      s       	D 	D 	D [	D 	   
 	    	    	   
 	   
 	     r   rl   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            Zej        dd            Zej        dd            ZdS )MLKEM1024PrivateKeyr   c                    ddl m} |                                st          dt          j                  t          j                                        S rn   )	r   r   r   r   r   r   r   r   generate_mlkem1024_keyrP   s     r   rQ   zMLKEM1024PrivateKey.generate   sZ    HHHHHH&&(( 	&?9  
 !88:::r   r   r   c                    ddl m} |                                st          dt          j                  t          j                            |          S rn   )	r   r   r   r   r   r   r   r   from_mlkem1024_seed_bytesr   s      r   rT   z#MLKEM1024PrivateKey.from_seed_bytes   s\    HHHHHH&&(( 	&?9  
 !;;DAAAr   rU   r(   c                    dS rW   r   rX   s     r   rY   zMLKEM1024PrivateKey.decapsulate   r#   r   rl   c                    dS )zG
        The MLKEM1024PublicKey derived from this private key.
        Nr   r    s    r   r[   zMLKEM1024PrivateKey.public_key   r#   r   r$   r%   r&   r\   r]   r^   c                    dS r`   r   ra   s       r   rb   z!MLKEM1024PrivateKey.private_bytes   r#   r   c                    dS rd   r   r    s    r   re   z%MLKEM1024PrivateKey.private_bytes_raw  r#   r   c                    dS r7   r   r    s    r   r8   zMLKEM1024PrivateKey.__copy__  r#   r   r9   r:   c                    dS r<   r   r=   s     r   r>   z MLKEM1024PrivateKey.__deepcopy__  r#   r   N)r   rx   )r   r   r   rx   rh   rv   ri   rA   )r9   r:   r   rx   rj   r   r   r   rx   rx      s.       	; 	; 	; [	; 	B 	B 	B [	B 	   
 	   
 	    	    	   
 	     r   rx   )
__future__r   rI   cryptography.exceptionsr   r   "cryptography.hazmat.bindings._rustr   r   cryptography.hazmat.primitivesr   cryptography.utilsr   ABCMetar
   hasattrregisterr   rM   rl   rx   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 % % % % % %6 6 6 6 6#+ 6 6 6 6r 7<!! E|1CDDDA A A A A3; A A A AH 7<!! G 2 EFFF6 6 6 6 63; 6 6 6 6r 7<!! G 2 EFFFA A A A ACK A A A AH 7<!! I  !3!GHHHHHI Ir   