o
    àý°jë5  ã                   @  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
ƒr:e ejj¡ G dd„ dejd	�Zeed
ƒrPe ejj¡ G dd„ dejd	�Zeed
ƒrfe 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¡ ejjZdS dS )é    )ÚannotationsN)ÚUnsupportedAlgorithmÚ_Reasons)Úopenssl)Ú_serialization)ÚBufferc                   @  óŽ   e Zd Zed$dd„ƒZejd%d
d„ƒZejd&dd„ƒZej	d'd(dd„ƒZ	ejd)dd„ƒZ
ejd*dd„ƒZejd+dd„ƒZejd,d"d#„ƒZdS )-ÚMLDSA44PublicKeyÚdataÚbytesÚreturnc                 C  ó,   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   © r   ú¢/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/cryptography/hazmat/primitives/asymmetric/mldsa.pyÚfrom_public_bytes   ó   þz"MLDSA44PublicKey.from_public_bytesÚencodingú_serialization.EncodingÚformatú_serialization.PublicFormatc                 C  ó   dS ©z9
        The serialized bytes of the public key.
        Nr   ©Úselfr   r   r   r   r   Úpublic_bytes   ó    zMLDSA44PublicKey.public_bytesc                 C  r!   )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&   r&   z!MLDSA44PublicKey.public_bytes_rawNÚ	signaturer   ÚcontextúBuffer | NoneÚNonec                 C  r!   ©z'
        Verify the signature.
        Nr   ©r$   r)   r
   r*   r   r   r   Úverify/   r&   zMLDSA44PublicKey.verifyÚmuc                 C  r!   ©zt
        Verify the signature over a precomputed mu (message representative).

        mu must be 64 bytes.
        Nr   ©r$   r)   r0   r   r   r   Ú	verify_mu:   r&   zMLDSA44PublicKey.verify_muÚotherÚobjectÚboolc                 C  r!   ©z"
        Checks equality.
        Nr   ©r$   r4   r   r   r   Ú__eq__F   r&   zMLDSA44PublicKey.__eq__c                 C  r!   ©z!
        Returns a copy.
        Nr   r'   r   r   r   Ú__copy__L   r&   zMLDSA44PublicKey.__copy__ÚmemoÚdictc                 C  r!   ©z&
        Returns a deep copy.
        Nr   ©r$   r<   r   r   r   Ú__deepcopy__R   r&   zMLDSA44PublicKey.__deepcopy__)r
   r   r   r	   ©r   r   r   r    r   r   ©r   r   ©N©r)   r   r
   r   r*   r+   r   r,   ©r)   r   r0   r   r   r,   ©r4   r5   r   r6   ©r   r	   )r<   r=   r   r	   ©Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   ÚabcÚabstractmethodr%   r(   r/   r3   r9   r;   r@   r   r   r   r   r	      ó$    	ü
r	   )Ú	metaclassr   c                   @  óš   e Zd Zed$dd„ƒZed%dd„ƒZejd&d	d
„ƒZejd'dd„ƒZ	ejd(dd„ƒZ
ejd)d*dd„ƒZejd+dd„ƒZejd$dd„ƒZejd,d"d#„ƒZdS )-ÚMLDSA44PrivateKeyr   c                 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   r   r   r   Úgenerate^   ó   þ
zMLDSA44PrivateKey.generater
   r   c                 C  r   r   )	r   r   r   r   r   r   r   r   Úfrom_mldsa44_seed_bytesr   r   r   r   Úfrom_seed_bytesj   r   z!MLDSA44PrivateKey.from_seed_bytesr	   c                 C  r!   )zD
        The MLDSA44PublicKey derived from the private key.
        Nr   r'   r   r   r   Ú
public_keyv   r&   zMLDSA44PrivateKey.public_keyr   r   r   ú_serialization.PrivateFormatÚencryption_algorithmú)_serialization.KeySerializationEncryptionr   c                 C  r!   ©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   r\   r   r   r   Úprivate_bytes|   r&   zMLDSA44PrivateKey.private_bytesc                 C  r!   ©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Š   r&   z#MLDSA44PrivateKey.private_bytes_rawNr*   r+   c                 C  r!   ©z!
        Signs the data.
        Nr   ©r$   r
   r*   r   r   r   Úsign“   r&   zMLDSA44PrivateKey.signr0   c                 C  r!   ©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$   r0   r   r   r   Úsign_mu™   r&   zMLDSA44PrivateKey.sign_muc                 C  r!   r:   r   r'   r   r   r   r;   ¢   r&   zMLDSA44PrivateKey.__copy__r<   r=   c                 C  r!   r>   r   r?   r   r   r   r@   ¨   r&   zMLDSA44PrivateKey.__deepcopy__)r   rR   )r
   r   r   rR   rG   ©r   r   r   r[   r\   r]   r   r   rB   rC   ©r
   r   r*   r+   r   r   ©r0   r   r   r   )r<   r=   r   rR   ©rI   rJ   rK   rL   rV   rY   rM   rN   rZ   r`   rb   re   rh   r;   r@   r   r   r   r   rR   ]   ó&    rR   c                   @  r   )-ÚMLDSA65PublicKeyr
   r   r   c                 C  r   ©Nr   r   z+ML-DSA-65 is not supported by this backend.)	r   r   r   r   r   r   r   r   Úfrom_mldsa65_public_bytesr   r   r   r   r   ´   r   z"MLDSA65PublicKey.from_public_bytesr   r   r   r    c                 C  r!   r"   r   r#   r   r   r   r%   À   r&   zMLDSA65PublicKey.public_bytesc                 C  r!   )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(   Ê   r&   z!MLDSA65PublicKey.public_bytes_rawNr)   r   r*   r+   r,   c                 C  r!   r-   r   r.   r   r   r   r/   Ó   r&   zMLDSA65PublicKey.verifyr0   c                 C  r!   r1   r   r2   r   r   r   r3   Þ   r&   zMLDSA65PublicKey.verify_mur4   r5   r6   c                 C  r!   r7   r   r8   r   r   r   r9   ê   r&   zMLDSA65PublicKey.__eq__c                 C  r!   r:   r   r'   r   r   r   r;   ð   r&   zMLDSA65PublicKey.__copy__r<   r=   c                 C  r!   r>   r   r?   r   r   r   r@   ö   r&   zMLDSA65PublicKey.__deepcopy__)r
   r   r   rn   rA   rB   rC   rD   rE   rF   ©r   rn   )r<   r=   r   rn   rH   r   r   r   r   rn   ³   rO   rn   c                   @  rQ   )-ÚMLDSA65PrivateKeyr   c                 C  rS   ro   )	r   r   r   r   r   r   r   r   Úgenerate_mldsa65_keyrU   r   r   r   rV     rW   zMLDSA65PrivateKey.generater
   r   c                 C  r   ro   )	r   r   r   r   r   r   r   r   Úfrom_mldsa65_seed_bytesr   r   r   r   rY     r   z!MLDSA65PrivateKey.from_seed_bytesrn   c                 C  r!   )zD
        The MLDSA65PublicKey derived from the private key.
        Nr   r'   r   r   r   rZ     r&   zMLDSA65PrivateKey.public_keyr   r   r   r[   r\   r]   r   c                 C  r!   r^   r   r_   r   r   r   r`      r&   zMLDSA65PrivateKey.private_bytesc                 C  r!   ra   r   r'   r   r   r   rb   .  r&   z#MLDSA65PrivateKey.private_bytes_rawNr*   r+   c                 C  r!   rc   r   rd   r   r   r   re   7  r&   zMLDSA65PrivateKey.signr0   c                 C  r!   rf   r   rg   r   r   r   rh   =  r&   zMLDSA65PrivateKey.sign_muc                 C  r!   r:   r   r'   r   r   r   r;   F  r&   zMLDSA65PrivateKey.__copy__r<   r=   c                 C  r!   r>   r   r?   r   r   r   r@   L  r&   zMLDSA65PrivateKey.__deepcopy__)r   rr   )r
   r   r   rr   rq   ri   rB   rC   rj   rk   )r<   r=   r   rr   rl   r   r   r   r   rr     rm   rr   c                   @  r   )-ÚMLDSA87PublicKeyr
   r   r   c                 C  r   ©Nr   r   z+ML-DSA-87 is not supported by this backend.)	r   r   r   r   r   r   r   r   Úfrom_mldsa87_public_bytesr   r   r   r   r   X  r   z"MLDSA87PublicKey.from_public_bytesr   r   r   r    c                 C  r!   r"   r   r#   r   r   r   r%   d  r&   zMLDSA87PublicKey.public_bytesc                 C  r!   )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(   n  r&   z!MLDSA87PublicKey.public_bytes_rawNr)   r   r*   r+   r,   c                 C  r!   r-   r   r.   r   r   r   r/   w  r&   zMLDSA87PublicKey.verifyr0   c                 C  r!   r1   r   r2   r   r   r   r3   ‚  r&   zMLDSA87PublicKey.verify_mur4   r5   r6   c                 C  r!   r7   r   r8   r   r   r   r9   Ž  r&   zMLDSA87PublicKey.__eq__c                 C  r!   r:   r   r'   r   r   r   r;   ”  r&   zMLDSA87PublicKey.__copy__r<   r=   c                 C  r!   r>   r   r?   r   r   r   r@   š  r&   zMLDSA87PublicKey.__deepcopy__)r
   r   r   ru   rA   rB   rC   rD   rE   rF   ©r   ru   )r<   r=   r   ru   rH   r   r   r   r   ru   W  rO   ru   c                   @  rQ   )-ÚMLDSA87PrivateKeyr   c                 C  rS   rv   )	r   r   r   r   r   r   r   r   Úgenerate_mldsa87_keyrU   r   r   r   rV   ¦  rW   zMLDSA87PrivateKey.generater
   r   c                 C  r   rv   )	r   r   r   r   r   r   r   r   Úfrom_mldsa87_seed_bytesr   r   r   r   rY   ²  r   z!MLDSA87PrivateKey.from_seed_bytesru   c                 C  r!   )zD
        The MLDSA87PublicKey derived from the private key.
        Nr   r'   r   r   r   rZ   ¾  r&   zMLDSA87PrivateKey.public_keyr   r   r   r[   r\   r]   r   c                 C  r!   r^   r   r_   r   r   r   r`   Ä  r&   zMLDSA87PrivateKey.private_bytesc                 C  r!   ra   r   r'   r   r   r   rb   Ò  r&   z#MLDSA87PrivateKey.private_bytes_rawNr*   r+   c                 C  r!   rc   r   rd   r   r   r   re   Û  r&   zMLDSA87PrivateKey.signr0   c                 C  r!   rf   r   rg   r   r   r   rh   á  r&   zMLDSA87PrivateKey.sign_muc                 C  r!   r:   r   r'   r   r   r   r;   ê  r&   zMLDSA87PrivateKey.__copy__r<   r=   c                 C  r!   r>   r   r?   r   r   r   r@   ð  r&   zMLDSA87PrivateKey.__deepcopy__)r   ry   )r
   r   r   ry   rx   ri   rB   rC   rj   rk   )r<   r=   r   ry   rl   r   r   r   r   ry   ¥  rm   ry   )Ú
__future__r   rM   Úcryptography.exceptionsr   r   Ú"cryptography.hazmat.bindings._rustr   r   Úcryptography.hazmat.primitivesr   Úcryptography.utilsr   ÚABCMetar	   ÚhasattrÚregisterr   rR   rn   rr   ru   ry   ÚMLDSAMuHasherr   r   r   r   Ú<module>   s4   
J
R
J
R
J
Rþ