B \Úæ`ø ã@shddlmZmZmZddlmZddlmZmZe  e¡Gdd„de ƒƒZ e  e¡Gdd„de ƒƒZ dS) é)Úabsolute_importÚdivisionÚprint_function)Úutils)ÚX25519PrivateKeyÚX25519PublicKeyc@seZdZdd„Zdd„ZdS)Ú_X25519PublicKeycCs||_||_dS)N)Ú_backendÚ _evp_pkey)ÚselfÚbackendÚevp_pkey©rú^/opt/alt/python37/lib64/python3.7/site-packages/cryptography/hazmat/backends/openssl/x25519.pyÚ__init__sz_X25519PublicKey.__init__cCs||jj d¡}|jj |j|¡}|j |dk¡|j |d|jjjk¡|jj |d|jjj ¡}|jj  ||¡dd…S)Nzunsigned char **é r) r Ú_ffiÚnewÚ_libZEVP_PKEY_get1_tls_encodedpointr Úopenssl_assertÚNULLÚgcZ OPENSSL_freeÚbuffer)r ZucharppÚresÚdatarrrÚ public_bytess z_X25519PublicKey.public_bytesN)Ú__name__Ú __module__Ú __qualname__rrrrrrr src@s$eZdZdd„Zdd„Zdd„ZdS)Ú_X25519PrivateKeycCs||_||_dS)N)r r )r r r rrrr"sz_X25519PrivateKey.__init__cCsz|j ¡}|jj ||j¡}|j |dk¡|jj ||jjj¡}|j ||jjjk¡|jj  ||jjj ¡}t |j|ƒS)Né) r Z_create_mem_bio_gcrZi2d_PUBKEY_bior rZd2i_PUBKEY_biorrrZ EVP_PKEY_freer)r Zbiorr rrrÚ public_key&s z_X25519PrivateKey.public_keycCs4t|tƒstdƒ‚|jj |j|jjj¡}|j  ||jjjk¡|jj  ||jjj ¡}|jj  |¡}|j  |dk¡|jj  ||j¡}|j  |dk¡|jj d¡}|jj ||jjj|¡}|j  |dk¡|j  |ddk¡|jj d|d¡}|jj |||¡}|dkrtdƒ‚|jj ||d¡dd…S)Nz(peer_public_key must be X25519PublicKey.r zsize_t *rzunsigned char[]z1Null shared key derived from public/private pair.)Ú isinstancerÚ TypeErrorr rZEVP_PKEY_CTX_newr rrrrZEVP_PKEY_CTX_freeZEVP_PKEY_derive_initZEVP_PKEY_derive_set_peerrZEVP_PKEY_deriveÚ ValueErrorr)r Zpeer_public_keyZctxrZkeylenZbufrrrÚexchange3s,   z_X25519PrivateKey.exchangeN)rrrrr!r%rrrrr s rN) Z __future__rrrZ cryptographyrZ0cryptography.hazmat.primitives.asymmetric.x25519rrZregister_interfaceÚobjectrrrrrrÚs