U
    ¶[Öe-  ã                   @   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                   @   s8   e Zd Zdd„ Zejejedœdd„Zedœdd„Z	d	S )
Ú_X448PublicKeyc                 C   s   || _ || _d S ©N©Ú_backendÚ	_evp_pkey©ÚselfÚbackendZevp_pkey© r   úk/var/www/html/services/stratfitenv/lib/python3.8/site-packages/cryptography/hazmat/backends/openssl/x448.pyÚ__init__   s    z_X448PublicKey.__init__)ÚencodingÚformatÚreturnc                 C   sV   |t jjks|t jjkr@|t jjk	s0|t jjk	r8tdƒ‚|  ¡ S | j ||| | jd ¡S )Nz3When using Raw both encoding and format must be Raw)	r   ÚEncodingÚRawÚPublicFormatÚ
ValueErrorÚ_raw_public_bytesr
   Z_public_key_bytesr   )r   r   r   r   r   r   Úpublic_bytes   s&    
ÿ
þ
ÿ
þÿ    ÿz_X448PublicKey.public_bytes©r   c                 C   sp   | 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   ,   s      ÿz _X448PublicKey._raw_public_bytesN)
Ú__name__Ú
__module__Ú__qualname__r   r   r   r   Úbytesr   r   r   r   r   r   r      s   ür   c                   @   sZ   e Zd Zdd„ Zedœdd„Zeedœdd„Zej	ej
ejed	œd
d„Zedœdd„ZdS )Ú_X448PrivateKeyc                 C   s   || _ || _d S r   r	   r   r   r   r   r   8   s    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#   Zx448_load_public_bytesr%   r   r   r   Ú
public_key<   s      ÿz_X448PrivateKey.public_key)Úpeer_public_keyr   c                 C   s"   t |tƒstdƒ‚t| j| j|ƒS )Nz&peer_public_key must be X448PublicKey.)Ú
isinstancer   Ú	TypeErrorr   r
   r   )r   r/   r   r   r   ÚexchangeF   s    
z_X448PrivateKey.exchange)r   r   Úencryption_algorithmr   c                 C   sd   |t jjks|t jjkrL|t jjk	s<|t jjk	s<t|t jƒsDt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   ÚPrivateFormatr0   ZNoEncryptionr   Ú_raw_private_bytesr
   Z_private_key_bytesr   )r   r   r   r3   r   r   r   Úprivate_bytesL   s2    
ÿ
þ
ÿ
þ ÿýÿ     ÿz_X448PrivateKey.private_bytesc                 C   sp   | j j dt¡}| j j dt¡}| j j | j||¡}| j  |dk¡ | j  |d tk¡ | j j |t¡d d … S r   )	r
   r   r   r    r!   ZEVP_PKEY_get_raw_private_keyr   r#   r$   r%   r   r   r   r5   h   s      ÿz"_X448PrivateKey._raw_private_bytesN)r)   r*   r+   r   r   r.   r,   r2   r   r   r4   ZKeySerializationEncryptionr6   r5   r   r   r   r   r-   7   s   
ûr-   N)
Z*cryptography.hazmat.backends.openssl.utilsr   Zcryptography.hazmat.primitivesr   Z.cryptography.hazmat.primitives.asymmetric.x448r   r   r    r   r-   r   r   r   r   Ú<module>   s
   '