pgddlZddlmZddlmZddlmZmZejrddl m Z dZ dZ Gdd eZ Gd d eZdS) N) exceptions) serialization)Ed448PrivateKeyEd448PublicKey)Backend9rc^eZdZd dZdejdejdefdZdefdZ d ed edd fd Z d S)_Ed448PublicKeybackendrc"||_||_dSN_backend _evp_pkeyselfr evp_pkeys L/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/ed448.py__init__z_Ed448PublicKey.__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_Ed448PublicKey.public_bytess  .2 2 23777 6 :::!;!??? I))++ +}.. fdDND   rc|jjdt}|jjdt}|jj|j||}|j|dk|j|dtk|jj|tddSNzunsigned char []size_t *r) r_ffinew_ED448_KEY_SIZE_libEVP_PKEY_get_raw_public_keyropenssl_assertbufferrbufbuflenress rr!z!_Ed448PublicKey._raw_public_bytes1sm $$%7II#'' ODDm << NC   $$SAX... $$VAY/%ABBB}!((o>>qqqAAr signaturedataNc |jj}|j||jjjk|jj||jjj}|jj||jjj|jjj|jjj|j }|j|dk|jj ||t||t|}|dkr%|j tjdS)Nr')rr+EVP_MD_CTX_newr-r(NULLgcEVP_MD_CTX_freeEVP_DigestVerifyInitrEVP_DigestVerifylen_consume_errorsrInvalidSignature)rr3r4 evp_md_ctxr2s rverifyz_Ed448PublicKey.verify;s#]'6688  $$Z4=3E3J%JKKK]'**  *:  m 55  M  # M  # M  # N    $$SAX...m 11  3y>>4T   !88 M ) ) + + +- - 8rr r) __name__ __module__ __qualname__rrrrbytesr#r!r@rrr r s"""" ( *       .B5BBBB..U.t......rr cteZdZddZdefdZdedefdZdej d ej d ej defd Z defd Z d S)_Ed448PrivateKeyr rc"||_||_dSrrrs rrz_Ed448PrivateKey.__init__Rrrrc|jjdt}|jjdt}|jj|j||}|j|dk|j|dtk|jj|dd}|j |Sr%) rr(r)r*r+r,rr-r.ed448_load_public_bytes)rr0r1r2r#s r public_keyz_Ed448PrivateKey.public_keyVsm $$%7II#'' ODDm << NC   $$SAX... $$VAY/%ABBB})0055aaa8 }44\BBBrr4c |jj}|j||jjjk|jj||jjj}|jj||jjj|jjj|jjj|j }|j|dk|jj dt}|jj dt|}|jj ||||t|}|j|dk|j|dtk|jj||dddS)Nr'zunsigned char[]r&r)rr+r6r-r(r7r8r9EVP_DigestSignInitrr)_ED448_SIG_SIZEr<EVP_DigestSignr.)rr4r?r2r0r1s rsignz_Ed448PrivateKey.signas]'6688  $$Z4=3E3J%JKKK]'**  *:  m 33  M  # M  # M  # N    $$SAX...m $$%6HH#'' CHH==m // VT3t99   $$SAX... $$VAY/%ABBB}!((fQi88;;rrrencryption_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 PrivateFormat isinstance NoEncryptionr _raw_private_bytesr_private_key_bytesr)rrrrRs r private_bytesz_Ed448PrivateKey.private_bytesxs  .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 rrWz#_Ed448PrivateKey._raw_private_bytessm $$%7II#'' ODDm == NC   $$SAX... $$VAY/%ABBB}!((o>>qqqAArNrA)rBrCrDrrrLrErQrrrTKeySerializationEncryptionrYrWrFrrrHrHQs"""" CN C C C C<<5<<<<. ( + ,F       8BEBBBBBBrrH)typing cryptographyrcryptography.hazmat.primitivesr/cryptography.hazmat.primitives.asymmetric.ed448rr TYPE_CHECKING,cryptography.hazmat.backends.openssl.backendrr*rOr rHrFrrrcs  ######888888  EDDDDDD9.9.9.9.9.n9.9.9.xKBKBKBKBKBKBKBKBKBKBr