a ao@sTddlmZddlmZddlmZmZdZdZGdddeZ Gdd d eZ d S) ) exceptions) serialization)Ed448PrivateKeyEd448PublicKey9rc@sJeZdZddZejejedddZedddZ eed d d d Z d S) _Ed448PublicKeycCs||_||_dSN_backend _evp_pkeyselfZbackendZevp_pkeyrP/usr/lib64/python3.9/site-packages/cryptography/hazmat/backends/openssl/ed448.py__init__sz_Ed448PublicKey.__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_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$rNULLgcEVP_MD_CTX_freeZEVP_DigestVerifyInitr ZEVP_DigestVerifylenZ_consume_errorsrZInvalidSignature)rr*r+ evp_md_ctxr)rrrverify7s&   z_Ed448PublicKey.verify) __name__ __module__ __qualname__rrrrbytesrrr2rrrrrs  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 rr 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$rr-r.r/ZEVP_DigestSignInitr r _ED448_SIG_SIZEr0ZEVP_DigestSignr%)rr+r1r)r'r(rrrsign]s*  z_Ed448PrivateKey.sign)rrencryption_algorithmrcCsd|tjjus|tjjurL|tjjus<|tjjussz#_Ed448PrivateKey._raw_private_bytesN)r3r4r5rrr8r6r:rrr<ZKeySerializationEncryptionr?r>rrrrr7Ms  r7N) Z cryptographyrZcryptography.hazmat.primitivesrZ/cryptography.hazmat.primitives.asymmetric.ed448rrr!r9rr7rrrrs  <