a
¹a ã @ sP d dl mZ d dlmZ d dlmZmZ dZG dd„ deƒZG dd„ deƒZ d S )
é )Ú_evp_pkey_derive)Ú
serialization)ÚX25519PrivateKeyÚX25519PublicKeyé c @ s8 e Zd Zdd„ Zejejedœdd„Zedœdd„Z d S )
Ú_X25519PublicKeyc C s || _ || _d S ©N©Ú_backendÚ _evp_pkey©ÚselfZbackendÚevp_pkey© r úQ/usr/lib64/python3.9/site-packages/cryptography/hazmat/backends/openssl/x25519.pyÚ__init__ s z_X25519PublicKey.__init__)ÚencodingÚformatÚreturnc C sV |t jju s|t jju r@|t jjus0|t jjur8tdƒ‚| ¡ S | j ||| | jd ¡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_X25519PublicKey.public_bytes©r c C s| | j j d¡}| j j | j|¡}| j |dk¡ | j |d | j jjk¡ | j j |d | j jj ¡}| j j
||¡d d … S )Nzunsigned char **r r )r
Ú_ffiÚnewÚ_libZEVP_PKEY_get1_tls_encodedpointr Úopenssl_assertÚNULLÚgcZOPENSSL_freeÚbuffer)r
ZucharppÚresÚdatar r r r - s ÿÿz"_X25519PublicKey._raw_public_bytesN)
Ú__name__Ú
__module__Ú__qualname__r r r r Úbytesr r r r r r r s ür c @ sZ e Zd Zdd„ Zedœdd„Zeedœdd„Zej ej
ejed œd
d„Zedœdd
„Z
dS )Ú_X25519PrivateKeyc C s || _ || _d S r r r r r r r ; s z_X25519PrivateKey.__init__r c C sz | j ¡ }| j j || j¡}| j |dk¡ | j j || j jj¡}| j || j jjk¡ | j j || j jj
¡}t| j |ƒS )Né )r
Ú_create_mem_bio_gcr Zi2d_PUBKEY_bior r Zd2i_PUBKEY_bior r r! Z
EVP_PKEY_freer )r
Úbior# r r r r Ú
public_key? s
ÿ
ÿz_X25519PrivateKey.public_key)Úpeer_public_keyr c C s" t |tƒstdƒ‚t| j| j|ƒS )Nz(peer_public_key must be X25519PublicKey.)Ú
isinstancer Ú TypeErrorr r
r )r
r. r r r ÚexchangeL s
z_X25519PrivateKey.exchange)r r Úencryption_algorithmr c C sd |t jju s|t jju rL|t jjus<|t jjus