pgddlZddlmZddlmZddlmZmZejrddl m Z dZ GddeZ Gd d eZ dS) N)_evp_pkey_derive) serialization)X25519PrivateKeyX25519PublicKey)Backend cJeZdZd dZdejdejdefdZdefdZ d S) _X25519PublicKeybackendrc"||_||_dSN_backend _evp_pkeyselfr evp_pkeys M/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/x25519.py__init__z_X25519PublicKey.__init__ !encodingformatreturnc&|tjjus|tjjurI|tjjus|tjjurt d|S|j||||jdS)Nz3When using Raw both encoding and format must be Raw) rEncodingRaw PublicFormat ValueError_raw_public_bytesr_public_key_bytesr)rrrs r public_bytesz_X25519PublicKey.public_bytess  .2 2 23777 6 :::!;!??? I))++ +}.. fdDND   rc|jjd}|jj|j|}|j|dk|j|d|jjjk|jj|d|jjj }|jj ||ddS)Nzunsigned char **rr) r_ffinew_libEVP_PKEY_get1_tls_encodedpointropenssl_assertNULLgc OPENSSL_freebuffer)rucharppresdatas rr z"_X25519PublicKey._raw_public_bytes1s-$(();<<m ?? NG   $$SBY/// $$WQZ4=3E3J%JKKK}!$$ AJ *7  }!((s33AAA66rNr r) __name__ __module__ __qualname__rrrrbytesr"r rrr r sy"""" ( *       . 75 7 7 7 7 7 7rr cteZdZddZdefdZdedefdZdej d ej d ej defd Z defd Z d S)_X25519PrivateKeyr rc"||_||_dSr rrs rrz_X25519PrivateKey.__init__?rrrc|j}|jj||j}|j|dk|jj||jjj}|j||jjjk|jj ||jjj }t|j|S)N) r_create_mem_bio_gcr&i2d_PUBKEY_biorr(d2i_PUBKEY_bior$r)r* EVP_PKEY_freer )rbior.rs r public_keyz_X25519PrivateKey.public_keyCsm..00m //T^DD $$SAX...=%44 #(   $$X1C1H%HIII=%(( dm(6    x888rpeer_public_keyct|tstdt|j|j|S)Nz(peer_public_key must be X25519PublicKey.) isinstancer TypeErrorrrr)rrAs rexchangez_X25519PrivateKey.exchangePs:/?;; HFGG G t~OOOrrrencryption_algorithmc\|tjjus|tjjurc|tjjus-|tjjust |tjstd|S|j |||||j dS)NzcWhen using Raw both encoding and format must be Raw and encryption_algorithm must be NoEncryption()) rrrr PrivateFormatrC NoEncryptionr_raw_private_bytesr_private_key_bytesr)rrrrFs r private_bytesz_X25519PrivateKey.private_bytesVs  .2 2 23777m9====#9#===!(-*D> !F **,, ,}// f2D$.$   rc |j}|jj||j|jjj|jjjd|jjj|jjj}|j|dk|j|}|jt|dk|t dS)Nrr:0) rr;r&i2d_PKCS8PrivateKey_biorr$r)r( _read_mem_biolen_X25519_KEY_SIZE)rr?r.pkcs8s rrJz$_X25519PrivateKey._raw_private_bytesrs m..00m 88  N M  # M  # M  # M  #   $$SAX... ++C00 $$SZZ2%5666&&''((rNr0)r1r2r3rrr@r4rErrrHKeySerializationEncryptionrLrJr5rrr7r7>s"""" 9O 9 9 9 9PPEPPPP  ( + ,F       8)E))))))rr7)typing*cryptography.hazmat.backends.openssl.utilsrcryptography.hazmat.primitivesr0cryptography.hazmat.primitives.asymmetric.x25519rr TYPE_CHECKING,cryptography.hazmat.backends.openssl.backendrrRr r7r5rrr[s  GGGGGG888888  EDDDDDD&7&7&7&7&7&7&7&7RF)F)F)F)F)(F)F)F)F)F)r