o
    -&%a-  ã                   @   sP   d dl mZ d dlmZ d dlmZmZ dZG dd„ deƒZG dd„ deƒZ	d	S )
é    )Ú_evp_pkey_derive)Úserialization)ÚX448PrivateKeyÚX448PublicKeyé8   c                   @   s<   e Zd Zdd„ Zdejdejdefdd„Zdefdd	„Z	d
S )Ú_X448PublicKeyc                 C   ó   || _ || _d S ©N©Ú_backendÚ	_evp_pkey©ÚselfÚbackendÚevp_pkey© r   úK/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/x448.pyÚ__init__   ó   
z_X448PublicKey.__init__ÚencodingÚformatÚreturnc                 C   sV   |t jju s|t jju r |t jjus|t jjurtdƒ‚|  ¡ S | j ||| | jd ¡S )Nz3When using Raw both encoding and format must be Raw)	r   ÚEncodingÚRawÚPublicFormatÚ
ValueErrorÚ_raw_public_bytesr   Ú_public_key_bytesr   )r   r   r   r   r   r   Úpublic_bytes   s   ÿÿz_X448PublicKey.public_bytesc                 C   óp   | j j dt¡}| j j dt¡}| j j | j||¡}| j  |dk¡ | j  |d tk¡ | j j |t¡d d … S ©Nzunsigned char []zsize_t *é   r   )	r   Ú_ffiÚnewÚ_X448_KEY_SIZEÚ_libÚEVP_PKEY_get_raw_public_keyr   Úopenssl_assertÚbuffer©r   ÚbufÚbuflenÚresr   r   r   r   ,   ó   ÿz _X448PublicKey._raw_public_bytesN)
Ú__name__Ú
__module__Ú__qualname__r   r   r   r   Úbytesr   r   r   r   r   r   r      s    þý
ür   c                   @   sb   e Zd Zdd„ Zdefdd„Zdedefdd„Zd	ej	d
ej
dejdefdd„Zdefdd„ZdS )Ú_X448PrivateKeyc                 C   r   r	   r
   r   r   r   r   r   8   r   z_X448PrivateKey.__init__r   c                 C   sd   | j j dt¡}| j j dt¡}| j j | j||¡}| j  |dk¡ | j  |d tk¡ | j  |¡S r    )	r   r"   r#   r$   r%   r&   r   r'   Úx448_load_public_bytesr)   r   r   r   Ú
public_key<   s   ÿz_X448PrivateKey.public_keyÚpeer_public_keyc                 C   s"   t |tƒs	tdƒ‚t| j| j|ƒS )Nz&peer_public_key must be X448PublicKey.)Ú
isinstancer   Ú	TypeErrorr   r   r   )r   r5   r   r   r   ÚexchangeF   s   
z_X448PrivateKey.exchanger   r   Úencryption_algorithmc                 C   sd   |t jju s|t jju r&|t jjus|t jjust|t jƒs"tdƒ‚|  ¡ S | j	 
|||| | jd ¡S )NzcWhen using Raw both encoding and format must be Raw and encryption_algorithm must be NoEncryption())r   r   r   r   ÚPrivateFormatr6   ÚNoEncryptionr   Ú_raw_private_bytesr   Ú_private_key_bytesr   )r   r   r   r9   r   r   r   Úprivate_bytesL   s   ÿÿÿÿz_X448PrivateKey.private_bytesc                 C   r   r    )	r   r"   r#   r$   r%   ÚEVP_PKEY_get_raw_private_keyr   r'   r(   r)   r   r   r   r<   h   r-   z"_X448PrivateKey._raw_private_bytesN)r.   r/   r0   r   r   r4   r1   r8   r   r   r:   ÚKeySerializationEncryptionr>   r<   r   r   r   r   r2   7   s    
þýü
ûr2   N)
Ú*cryptography.hazmat.backends.openssl.utilsr   Úcryptography.hazmat.primitivesr   Ú.cryptography.hazmat.primitives.asymmetric.x448r   r   r$   r   r2   r   r   r   r   Ú<module>   s   '