U q`o@sTddlmZddlmZddlmZmZdZdZGdddeZ Gdd d eZ d S) ) exceptions) serialization)Ed448PrivateKeyEd448PublicKey9rc@sJeZdZddZejejedddZedddZ eed d d d Z d S) _Ed448PublicKeycCs||_||_dSN_backend _evp_pkeyselfbackendZevp_pkeyrQ/tmp/pip-target-nv4zd3e_/lib/python/cryptography/hazmat/backends/openssl/ed448.py__init__sz_Ed448PublicKey.__init__)encodingformatreturncCsV|tjjks|tjjkr@|tjjk s0|tjjk r8td|S|j||||jdS)Nz3When using Raw both encoding and format must be Raw) rEncodingRaw PublicFormat ValueError_raw_public_bytesr Z_public_key_bytesr )rrrrrr public_bytess&    z_Ed448PublicKey.public_bytesrcCsp|jjdt}|jjdt}|jj|j||}|j|dk|j|dtk|jj|tddSNzunsigned char []size_t *r) r _ffinew_ED448_KEY_SIZE_libEVP_PKEY_get_raw_public_keyr openssl_assertbufferrbufbuflenresrrrr-sz!_Ed448PublicKey._raw_public_bytesN) signaturedatarcCs|jj}|j||jjjk|jj||jjj}|jj||jjj|jjj|jjj|j }|j|dk|jj ||t ||t |}|dkr|j t jdS)Nr)r r#EVP_MD_CTX_newr%r NULLgcEVP_MD_CTX_freeZEVP_DigestVerifyInitr ZEVP_DigestVerifylenZ_consume_errorsrZInvalidSignature)rr+r, evp_md_ctxr*rrrverify7s0  z_Ed448PublicKey.verify) __name__ __module__ __qualname__rrrrbytesrrr3rrrrrs  rc@sZeZdZddZedddZeedddZej ej ej ed d d Z edd d Z dS)_Ed448PrivateKeycCs||_||_dSr r r rrrrNsz_Ed448PrivateKey.__init__rcCsz|jjdt}|jjdt}|jj|j||}|j|dk|j|dtk|jj|dd}|j |Sr) r r r!r"r#r$r r%r&Zed448_load_public_bytes)rr(r)r*rrrr public_keyRsz_Ed448PrivateKey.public_key)r,rcCs|jj}|j||jjjk|jj||jjj}|jj||jjj|jjj|jjj|j }|j|dk|jj dt }|jj dt |}|jj ||||t |}|j|dk|j|dt k|jj||dddS)Nrzunsigned char[]rr)r r#r-r%r r.r/r0ZEVP_DigestSignInitr r!_ED448_SIG_SIZEr1ZEVP_DigestSignr&)rr,r2r*r(r)rrrsign]s4 z_Ed448PrivateKey.sign)rrencryption_algorithmrcCsd|tjjks|tjjkrL|tjjk s<|tjjk ss  <