a ¹aã@sPddlmZddlmZddlmZmZdZGdd„deƒZGdd„deƒZ d S) é)Ú_evp_pkey_derive)Ú serialization)ÚX25519PrivateKeyÚX25519PublicKeyé c@s8eZdZdd„Zejejedœdd„Zedœdd„Z d S) Ú_X25519PublicKeycCs||_||_dS©N©Ú_backendÚ _evp_pkey©ÚselfZbackendÚevp_pkey©rúQ/usr/lib64/python3.9/site-packages/cryptography/hazmat/backends/openssl/x25519.pyÚ__init__sz_X25519PublicKey.__init__)ÚencodingÚformatÚreturncCsV|tjjus|tjjur@|tjjus0|tjjur8tdƒ‚| ¡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 rrrrrÚ public_bytess ÿ þ ÿ þÿ ÿz_X25519PublicKey.public_bytes©rcCs||jj d¡}|jj |j|¡}|j |dk¡|j |d|jjjk¡|jj |d|jjj ¡}|jj  ||¡dd…S)Nzunsigned char **rr) r Ú_ffiÚnewÚ_libZEVP_PKEY_get1_tls_encodedpointr Úopenssl_assertÚNULLÚgcZ OPENSSL_freeÚbuffer)r ZucharppÚresÚdatarrrr-sÿÿz"_X25519PublicKey._raw_public_bytesN) Ú__name__Ú __module__Ú __qualname__rrrrÚbytesrrrrrrrs ü rc@sZeZdZdd„Zedœdd„Zeedœdd„Zej ej ej ed œd d „Z edœd d „Z dS)Ú_X25519PrivateKeycCs||_||_dSrr r rrrr;sz_X25519PrivateKey.__init__rcCsz|j ¡}|jj ||j¡}|j |dk¡|jj ||jjj¡}|j ||jjjk¡|jj  ||jjj ¡}t |j|ƒS)Né) r Ú_create_mem_bio_gcrZi2d_PUBKEY_bior rZd2i_PUBKEY_biorr r!Z EVP_PKEY_freer)r Úbior#rrrrÚ public_key?s  ÿ ÿz_X25519PrivateKey.public_key)Úpeer_public_keyrcCs"t|tƒstdƒ‚t|j|j|ƒS)Nz(peer_public_key must be X25519PublicKey.)Ú isinstancerÚ TypeErrorrr r )r r.rrrÚexchangeLs z_X25519PrivateKey.exchange)rrÚencryption_algorithmrcCsd|tjjus|tjjurL|tjjus<|tjjuss  )