
    2i                    n   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j!                  ej"                  j                          G d dej                  	      Z eed
      r%ej!                  ej"                  j$                          G d dej                  	      Z eed
      r%ej!                  ej"                  j&                          G d dej                  	      Z eed
      r&ej!                  ej"                  j(                         yy)    )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y)MLKEM768PublicKeyc                    ddl m} |j                         st        dt        j
                        t        j                  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clsdatar   s      e/var/www/html/qr/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/mlkem.pyfrom_public_bytesz#MLKEM768PublicKey.from_public_bytes   sC    H&&(&>99 
 !!<<TBB    c                     yzC
        Encapsulate: returns (shared_secret, ciphertext).
        N selfs    r   encapsulatezMLKEM768PublicKey.encapsulate       r   c                     yz9
        The serialized bytes of the public key.
        Nr   r   encodingformats      r   public_byteszMLKEM768PublicKey.public_bytes"   r!   r   c                     y)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   c                     yz"
        Checks equality.
        Nr   r   others     r   __eq__zMLKEM768PublicKey.__eq__5   r!   r   c                     yz!
        Returns a copy.
        Nr   r   s    r   __copy__zMLKEM768PublicKey.__copy__;   r!   r   c                     yz&
        Returns a deep copy.
        Nr   r   memos     r   __deepcopy__zMLKEM768PublicKey.__deepcopy__A   r!   r   N)r   r   returnr
   r7   ztuple[bytes, bytes]r%   _serialization.Encodingr&   z_serialization.PublicFormatr7   bytesr7   r;   r-   objectr7   boolr7   r
   )r5   dictr7   r
   __name__
__module____qualname__classmethodr   abcabstractmethodr    r'   r)   r.   r1   r6   r   r   r   r
   r
      s    	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y	)MLKEM768PrivateKeyc                    ddl m} |j                         st        dt        j
                        t        j                  j                         S r   )	r   r   r   r   r   r   r   r   generate_mlkem768_keyr   r   s     r   generatezMLKEM768PrivateKey.generateM   sA    H&&(&>99 
 !!7799r   c                    ddl m} |j                         st        dt        j
                        t        j                  j                  |      S r   )	r   r   r   r   r   r   r   r   from_mlkem768_seed_bytesr   s      r   from_seed_bytesz"MLKEM768PrivateKey.from_seed_bytesY   sC    H&&(&>99 
 !!::4@@r   c                     yz5
        Decapsulate: returns shared_secret.
        Nr   r   
ciphertexts     r   decapsulatezMLKEM768PrivateKey.decapsulatee   r!   r   c                     y)zF
        The MLKEM768PublicKey derived from this private key.
        Nr   r   s    r   
public_keyzMLKEM768PrivateKey.public_keyk   r!   r   c                     yz:
        The serialized bytes of the private key.
        Nr   r   r%   r&   encryption_algorithms       r   private_bytesz MLKEM768PrivateKey.private_bytesq   r!   r   c                     y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                     yr0   r   r   s    r   r1   zMLKEM768PrivateKey.__copy__   r!   r   c                     yr3   r   r4   s     r   r6   zMLKEM768PrivateKey.__deepcopy__   r!   r   N)r7   rK   )r   r   r7   rK   rV   r   r7   r;   r@   r%   r:   r&   z_serialization.PrivateFormatr]   z)_serialization.KeySerializationEncryptionr7   r;   r<   )r5   rA   r7   rK   rC   rD   rE   rF   rO   rR   rG   rH   rW   rY   r^   ra   r1   r6   r   r   r   rK   rK   L   s    	: 	: 	A 	A 	 
 	 
 	) - H	
 
  	  	 
 	 r   rK   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y)MLKEM1024PublicKeyc                    ddl m} |j                         st        dt        j
                        t        j                  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   sC    H&&(&?99 
 !!==dCCr   c                     yr   r   r   s    r   r    zMLKEM1024PublicKey.encapsulate   r!   r   c                     yr#   r   r$   s      r   r'   zMLKEM1024PublicKey.public_bytes   r!   r   c                     y)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   c                     yr+   r   r,   s     r   r.   zMLKEM1024PublicKey.__eq__   r!   r   c                     yr0   r   r   s    r   r1   zMLKEM1024PublicKey.__copy__   r!   r   c                     yr3   r   r4   s     r   r6   zMLKEM1024PublicKey.__deepcopy__   r!   r   N)r   r   r7   rh   r8   r9   r<   r=   r7   rh   )r5   rA   r7   rh   rB   r   r   r   rh   rh      s    	D 	D 	 
 	) , 
	  	  	 
 	 
 	 r   rh   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y	)MLKEM1024PrivateKeyc                    ddl m} |j                         st        dt        j
                        t        j                  j                         S rj   )	r   r   r   r   r   r   r   r   generate_mlkem1024_keyrN   s     r   rO   zMLKEM1024PrivateKey.generate   sA    H&&(&?99 
 !!88::r   c                    ddl m} |j                         st        dt        j
                        t        j                  j                  |      S rj   )	r   r   r   r   r   r   r   r   from_mlkem1024_seed_bytesr   s      r   rR   z#MLKEM1024PrivateKey.from_seed_bytes   sC    H&&(&?99 
 !!;;DAAr   c                     yrT   r   rU   s     r   rW   zMLKEM1024PrivateKey.decapsulate   r!   r   c                     y)zG
        The MLKEM1024PublicKey derived from this private key.
        Nr   r   s    r   rY   zMLKEM1024PrivateKey.public_key   r!   r   c                     yr[   r   r\   s       r   r^   z!MLKEM1024PrivateKey.private_bytes   r!   r   c                     yr`   r   r   s    r   ra   z%MLKEM1024PrivateKey.private_bytes_raw  r!   r   c                     yr0   r   r   s    r   r1   zMLKEM1024PrivateKey.__copy__  r!   r   c                     yr3   r   r4   s     r   r6   z MLKEM1024PrivateKey.__deepcopy__  r!   r   N)r7   rt   )r   r   r7   rt   rd   rr   re   r<   )r5   rA   r7   rt   rf   r   r   r   rt   rt      s    	; 	; 	B 	B 	 
 	 
 	) - H	
 
  	  	 
 	 r   rt   )
__future__r   rG   cryptography.exceptionsr   r   "cryptography.hazmat.bindings._rustr   r   cryptography.hazmat.primitivesr   cryptography.utilsr   ABCMetar
   hasattrregisterr   rK   rh   rt   r   r   r   <module>r      s   
 # 
 B F 9 %6#++ 6r <!|11CCDA3;; AH <! 2 2 E EF63;; 6r <! 2 2 E EFACKK AH <!  !3!3!G!GH "r   