pgddlZddlmZddlmZddlmZmZejrddl m Z dZ GddeZ Gd d eZ dS) N)_evp_pkey_derive) serialization)X448PrivateKey X448PublicKey)Backend8cJeZdZd dZdejdejdefdZdefdZ d S) _X448PublicKeybackendrc"||_||_dSN_backend _evp_pkeyselfr evp_pkeys K/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/x448.py__init__z_X448PublicKey.__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_X448PublicKey.public_bytess  .2 2 23777 6 :::!;!??? I))++ +}.. fdDND   rc|jjdt}|jjdt}|jj|j||}|j|dk|j|dtk|jj|tddSNzunsigned char []zsize_t *r) r_ffinew_X448_KEY_SIZE_libEVP_PKEY_get_raw_public_keyropenssl_assertbufferrbufbuflenress rr z _X448PublicKey._raw_public_bytes0sm $$%7HH#'' NCCm << NC   $$SAX... $$VAY.%@AAA}!((n==aaa@@rNr r) __name__ __module__ __qualname__rrrrbytesr"r rrr r s"""" ( *       .A5AAAAAArr cteZdZddZdefdZdedefdZdej d ej d ej defd Z defd Z d S)_X448PrivateKeyr rc"||_||_dSr rrs rrz_X448PrivateKey.__init__<rrrc|jjdt}|jjdt}|jj|j||}|j|dk|j|dtk|jj|dd}|j |Sr$) rr&r'r(r)r*rr+r,x448_load_public_bytes)rr.r/r0r"s r public_keyz_X448PrivateKey.public_key@sm $$%7HH#'' NCCm << NC   $$SAX... $$VAY.%@AAA})0055aaa8 }33LAAArpeer_public_keyct|tstdt|j|j|S)Nz&peer_public_key must be X448PublicKey.) isinstancer TypeErrorrrr)rr=s rexchangez_X448PrivateKey.exchangeKs:/=99 FDEE E 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 PrivateFormatr? NoEncryptionr_raw_private_bytesr_private_key_bytesr)rrrrBs r private_bytesz_X448PrivateKey.private_bytesQs  .2 2 23777m9====#9#===!(-*D> !F **,, ,}// f2D$.$   rc|jjdt}|jjdt}|jj|j||}|j|dk|j|dtk|jj|tddSr$) rr&r'r(r)EVP_PKEY_get_raw_private_keyrr+r,r-s rrFz"_X448PrivateKey._raw_private_bytesmsm $$%7HH#'' NCCm == NC   $$SAX... $$VAY.%@AAA}!((n==aaa@@rNr1)r2r3r4rrr<r5rArrrDKeySerializationEncryptionrHrFr6rrr8r8;s"""" BM B B B BP P%PPPP  ( + ,F       8AEAAAAAArr8)typing*cryptography.hazmat.backends.openssl.utilsrcryptography.hazmat.primitivesr.cryptography.hazmat.primitives.asymmetric.x448rr TYPE_CHECKING,cryptography.hazmat.backends.openssl.backendrr(r r8r6rrrRs  GGGGGG888888  EDDDDDD$A$A$A$A$A]$A$A$AN:A:A:A:A:An:A:A:A:A:Ar