a °…b‘ã@sjddlZddlmZddlmZddlmZmZejrBddl m Z dZ Gdd„deƒZ Gd d „d eƒZ dS) éN)Ú_evp_pkey_derive)Ú serialization)ÚX25519PrivateKeyÚX25519PublicKey)ÚBackendé c@s>eZdZddœdd„Zejejedœdd„Zedœd d „Z d S) Ú_X25519PublicKeyr©ÚbackendcCs||_||_dS©N©Ú_backendÚ _evp_pkey©Úselfr Úevp_pkey©rúR/tmp/pip-target-98j97qn4/lib/python/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)rrrrrrÚ 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)rZucharppÚresÚdatarrrr1sÿÿz"_X25519PublicKey._raw_public_bytesN) Ú__name__Ú __module__Ú __qualname__rrrrÚbytesrrrrrrrs ü rc@s`eZdZddœdd„Zedœdd„Zeedœd d „Zej ej ej ed œd d „Z edœdd„Z dS)Ú_X25519PrivateKeyrr cCs||_||_dSr r rrrrr?sz_X25519PrivateKey.__init__rcCsz|j ¡}|jj ||j¡}|j |dk¡|jj ||jjj¡}|j ||jjjk¡|jj  ||jjj ¡}t |j|ƒS)Né) r Ú_create_mem_bio_gcr!Zi2d_PUBKEY_biorr"Zd2i_PUBKEY_biorr#r$Z EVP_PKEY_freer)rÚbior&rrrrÚ public_keyCs  ÿ ÿz_X25519PrivateKey.public_key)Úpeer_public_keyrcCs"t|tƒstdƒ‚t|j|j|ƒS)Nz(peer_public_key must be X25519PublicKey.)Ú isinstancerÚ TypeErrorrr r)rr1rrrÚexchangePs z_X25519PrivateKey.exchange)rrÚencryption_algorithmrcCsd|tjjus|tjjurL|tjjus<|tjjuss û r,)ÚtypingZ*cryptography.hazmat.backends.openssl.utilsrZcryptography.hazmat.primitivesrZ0cryptography.hazmat.primitives.asymmetric.x25519rrÚ TYPE_CHECKINGZ,cryptography.hazmat.backends.openssl.backendrr;rr,rrrrÚs   )