a a @ sT d dl mZ d dlmZ d dlmZmZmZmZ G dd deZ G dd deZ dS ) ) exceptions) serialization)Ed25519PrivateKeyEd25519PublicKey_ED25519_KEY_SIZE_ED25519_SIG_SIZEc @ sJ e Zd Zdd ZejejedddZedddZ eed d ddZ d S ) _Ed25519PublicKeyc C s || _ || _d S N_backend _evp_pkeyselfZbackendZevp_pkey r R/usr/lib64/python3.9/site-packages/cryptography/hazmat/backends/openssl/ed25519.py__init__ s z_Ed25519PublicKey.__init__)encodingformatreturnc C sV |t jju s|t jju r@|t jjus0|t jjur8td| S | j||| | jd S )Nz3When using Raw both encoding and format must be Raw) r EncodingRawPublicFormat ValueError_raw_public_bytesr Z_public_key_bytesr )r r r r r r public_bytes s z_Ed25519PublicKey.public_bytesr c C sp | j jdt}| j jdt}| j j| j||}| j |dk | j |d tk | j j|td d S Nzunsigned char []size_t * r ) r _ffinewr _libEVP_PKEY_get_raw_public_keyr openssl_assertbufferr bufbuflenresr r r r , s z#_Ed25519PublicKey._raw_public_bytesN) signaturedatar c C s | j j }| j || j jjk | j j|| j jj}| j j|| j jj| j jj| j jj| j }| j |dk | j j ||t||t|}|dkr| j t jd S )Nr )r r! EVP_MD_CTX_newr# r NULLgcEVP_MD_CTX_freeZEVP_DigestVerifyInitr ZEVP_DigestVerifylenZ_consume_errorsr ZInvalidSignature)r r) r* evp_md_ctxr( r r r verify6 s&