U
    ¤€ljÝ  ã                   @  sü   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¡ 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„ƒZejd	d
ddœdd„ƒZej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 )ÚMLKEM768PublicKeyr   ©ÚdataÚreturnc                 C  s,   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ÚmlkemZfrom_mlkem768_public_bytes©Úclsr
   r   © r   úS/tmp/pip-unpacked-wheel-f0p8pgmk/cryptography/hazmat/primitives/asymmetric/mlkem.pyÚfrom_public_bytes   s    þz#MLKEM768PublicKey.from_public_bytesútuple[bytes, bytes]©r   c                 C  s   dS ©zC
        Encapsulate: returns (shared_secret, ciphertext).
        Nr   ©Úselfr   r   r   Úencapsulate   s    zMLKEM768PublicKey.encapsulateú_serialization.Encodingú_serialization.PublicFormatÚbytes©ÚencodingÚformatr   c                 C  s   dS ©z9
        The serialized bytes of the public key.
        Nr   ©r   r#   r$   r   r   r   Úpublic_bytes"   s    zMLKEM768PublicKey.public_bytesc                 C  s   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   r   r   r   Úpublic_bytes_raw,   s    z"MLKEM768PublicKey.public_bytes_rawÚobjectÚbool©Úotherr   c                 C  s   dS ©z"
        Checks equality.
        Nr   ©r   r,   r   r   r   Ú__eq__5   s    zMLKEM768PublicKey.__eq__c                 C  s   dS ©z!
        Returns a copy.
        Nr   r   r   r   r   Ú__copy__;   s    zMLKEM768PublicKey.__copy__Údict©Úmemor   c                 C  s   dS ©z&
        Returns a deep copy.
        Nr   ©r   r4   r   r   r   Ú__deepcopy__A   s    zMLKEM768PublicKey.__deepcopy__N©Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   ÚabcÚabstractmethodr   r'   r(   r/   r1   r7   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
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„ƒZejdd dœdd„ƒZdS )ÚMLKEM768PrivateKeyr   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_mlkem768_key©r   r   r   r   r   ÚgenerateM   s    þzMLKEM768PrivateKey.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_mlkem768_seed_bytesr   r   r   r   Úfrom_seed_bytesY   s    þz"MLKEM768PrivateKey.from_seed_bytesr!   ©Ú
ciphertextr   c                 C  s   dS ©z5
        Decapsulate: returns shared_secret.
        Nr   ©r   rE   r   r   r   Údecapsulatee   s    zMLKEM768PrivateKey.decapsulater   c                 C  s   dS )zF
        The MLKEM768PublicKey derived from this private key.
        Nr   r   r   r   r   Ú
public_keyk   s    zMLKEM768PrivateKey.public_keyr   ú_serialization.PrivateFormatú)_serialization.KeySerializationEncryption©r#   r$   Úencryption_algorithmr   c                 C  s   dS ©z:
        The serialized bytes of the private key.
        Nr   ©r   r#   r$   rM   r   r   r   Úprivate_bytesq   s    z MLKEM768PrivateKey.private_bytesc                 C  s   dS ©z�
        The raw bytes of the private key (64-byte seed).
        Equivalent to private_bytes(Raw, Raw, NoEncryption()).
        Nr   r   r   r   r   Úprivate_bytes_raw|   s    z$MLKEM768PrivateKey.private_bytes_rawc                 C  s   dS r0   r   r   r   r   r   r1   ƒ   s    zMLKEM768PrivateKey.__copy__r2   r3   c                 C  s   dS r5   r   r6   r   r   r   r7   ‰   s    zMLKEM768PrivateKey.__deepcopy__N©r9   r:   r;   r<   rB   rC   r=   r>   rH   rI   rP   rR   r1   r7   r   r   r   r   r@   L   s    
r@   c                   @  s    e Zd Zedd dœdd„ƒZej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„ƒZ
ejd dœdd„ƒZejdd dœdd„ƒZdS )ÚMLKEM1024PublicKeyr   r	   c                 C  s,   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   Zfrom_mlkem1024_public_bytesr   r   r   r   r   •   s    þz$MLKEM1024PublicKey.from_public_bytesr   r   c                 C  s   dS r   r   r   r   r   r   r   ¡   s    zMLKEM1024PublicKey.encapsulater   r    r!   r"   c                 C  s   dS r%   r   r&   r   r   r   r'   §   s    zMLKEM1024PublicKey.public_bytesc                 C  s   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   r   r   r   r(   ±   s    z#MLKEM1024PublicKey.public_bytes_rawr)   r*   r+   c                 C  s   dS r-   r   r.   r   r   r   r/   º   s    zMLKEM1024PublicKey.__eq__c                 C  s   dS r0   r   r   r   r   r   r1   À   s    zMLKEM1024PublicKey.__copy__r2   r3   c                 C  s   dS r5   r   r6   r   r   r   r7   Æ   s    zMLKEM1024PublicKey.__deepcopy__Nr8   r   r   r   r   rT   ”   s   	rT   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
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„ƒZejdd dœdd„ƒZdS )ÚMLKEM1024PrivateKeyr   c                 C  s*   ddl m} | ¡ s tdtjƒ‚tj ¡ S rU   )	r   r   r   r   r   r   r   r   Zgenerate_mlkem1024_keyrA   r   r   r   rB   Ò   s    þzMLKEM1024PrivateKey.generater   r	   c                 C  s,   ddl m} | ¡ s tdtjƒ‚tj |¡S rU   )	r   r   r   r   r   r   r   r   Zfrom_mlkem1024_seed_bytesr   r   r   r   rC   Þ   s    þz#MLKEM1024PrivateKey.from_seed_bytesr!   rD   c                 C  s   dS rF   r   rG   r   r   r   rH   ê   s    zMLKEM1024PrivateKey.decapsulaterT   c                 C  s   dS )zG
        The MLKEM1024PublicKey derived from this private key.
        Nr   r   r   r   r   rI   ð   s    zMLKEM1024PrivateKey.public_keyr   rJ   rK   rL   c                 C  s   dS rN   r   rO   r   r   r   rP   ö   s    z!MLKEM1024PrivateKey.private_bytesc                 C  s   dS rQ   r   r   r   r   r   rR     s    z%MLKEM1024PrivateKey.private_bytes_rawc                 C  s   dS r0   r   r   r   r   r   r1     s    zMLKEM1024PrivateKey.__copy__r2   r3   c                 C  s   dS r5   r   r6   r   r   r   r7     s    z MLKEM1024PrivateKey.__deepcopy__NrS   r   r   r   r   rV   Ñ   s    
rV   )Ú
__future__r   r=   Zcryptography.exceptionsr   r   Z"cryptography.hazmat.bindings._rustr   r   Zcryptography.hazmat.primitivesr   Zcryptography.utilsr   ÚABCMetar   ÚhasattrÚregisterr   r@   rT   rV   r   r   r   r   Ú<module>   s"   9
D
9
D
