U q`@sTddlmZddlmZddlmZmZmZmZGdddeZ GdddeZ dS) ) exceptions) serialization)Ed25519PrivateKeyEd25519PublicKey_ED25519_KEY_SIZE_ED25519_SIG_SIZEc@sJeZdZddZejejedddZedddZ eed d d d Z d S) _Ed25519PublicKeycCs||_||_dSN_backend _evp_pkeyselfbackendZevp_pkeyrS/tmp/pip-target-nv4zd3e_/lib/python/cryptography/hazmat/backends/openssl/ed25519.py__init__sz_Ed25519PublicKey.__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_Ed25519PublicKey.public_bytesrcCsp|jjdt}|jjdt}|jj|j||}|j|dk|j|dtk|jj|tddSNzunsigned char []size_t *r) r _ffinewr_libEVP_PKEY_get_raw_public_keyr openssl_assertbufferrbufbuflenresrrrr,sz#_Ed25519PublicKey._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)rrrverify6s0  z_Ed25519PublicKey.verify) __name__ __module__ __qualname__rrrrbytesrrr2rrrrrs  rc@sZeZdZddZedddZeedddZej ej ej ed d d Z edd d Z dS)_Ed25519PrivateKeycCs||_||_dSr r r rrrrMsz_Ed25519PrivateKey.__init__rcCsz|jjdt}|jjdt}|jj|j||}|j|dk|j|dtk|jj|dd}|j |Sr) r r r!rr"r#r r$r%Zed25519_load_public_bytes)rr'r(r)rrrr public_keyQsz_Ed25519PrivateKey.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.r/ZEVP_DigestSignInitr r!rr0ZEVP_DigestSignr%)rr+r1r)r'r(rrrsign\s4 z_Ed25519PrivateKey.sign)rrencryption_algorithmrcCsd|tjjks|tjjkrL|tjjk s<|tjjk sr=rrrrr7Ls  r7N) Z cryptographyrZcryptography.hazmat.primitivesrZ1cryptography.hazmat.primitives.asymmetric.ed25519rrrrrr7rrrrs  <