a a@sTddlmZddlmZddlmZmZmZmZGdddeZ GdddeZ dS) ) exceptions) serialization)Ed25519PrivateKeyEd25519PublicKey_ED25519_KEY_SIZE_ED25519_SIG_SIZEc@sJeZdZddZejejedddZedddZ eed d d d Z d S) _Ed25519PublicKeycCs||_||_dSN_backend _evp_pkeyselfZbackendZevp_pkeyrR/usr/lib64/python3.9/site-packages/cryptography/hazmat/backends/openssl/ed25519.py__init__sz_Ed25519PublicKey.__init__)encodingformatreturncCsV|tjjus|tjjur@|tjjus0|tjjur8td|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#rNULLgcEVP_MD_CTX_freeZEVP_DigestVerifyInitr ZEVP_DigestVerifylenZ_consume_errorsrZInvalidSignature)rr)r* evp_md_ctxr(rrrverify6s&   z_Ed25519PublicKey.verify) __name__ __module__ __qualname__rrrrbytesrrr1rrrrrs  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 rr 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#rr,r-r.ZEVP_DigestSignInitr r rr/ZEVP_DigestSignr$)rr*r0r(r&r'rrrsign\s*  z_Ed25519PrivateKey.sign)rrencryption_algorithmrcCsd|tjjus|tjjurL|tjjus<|tjjuss  <