o -&%ao@sTddlmZddlmZddlmZmZdZdZGdddeZ Gdd d eZ d S) ) exceptions) serialization)Ed448PrivateKeyEd448PublicKey9rc@sReZdZddZdejdejdefddZdefdd Z d ed edd fd dZ d S)_Ed448PublicKeycC||_||_dSN_backend _evp_pkeyselfbackendevp_pkeyrL/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/ed448.py__init__ z_Ed448PublicKey.__init__encodingformatreturncCsV|tjjus |tjjur |tjjus|tjjurtd|S|j||||jdS)Nz3When using Raw both encoding and format must be Raw) rEncodingRaw PublicFormat ValueError_raw_public_bytesr _public_key_bytesr )rrrrrr public_bytess     z_Ed448PublicKey.public_bytescCp|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-z!_Ed448PublicKey._raw_public_bytes signaturedataNcCs|jj}|j||jjjk|jj||jjj}|jj||jjj|jjj|jjj|j }|j|dk|jj ||t ||t |}|dkrT|j t jdS)Nr#)r r'EVP_MD_CTX_newr)r$NULLgcEVP_MD_CTX_freeEVP_DigestVerifyInitr EVP_DigestVerifylen_consume_errorsrInvalidSignature)rr0r1 evp_md_ctxr.rrrverify7s(   z_Ed448PublicKey.verify) __name__ __module__ __qualname__rrrrbytesrrr<rrrrrs  rc@sbeZdZddZdefddZdedefddZd ej d ej d ej defd d Z defddZ dS)_Ed448PrivateKeycCr r r rrrrrNrz_Ed448PrivateKey.__init__rcCsz|jjdt}|jjdt}|jj|j||}|j|dk|j|dtk|jj|dd}|j |Sr!) r r$r%r&r'r(r r)r*ed448_load_public_bytes)rr,r-r.rrrr public_keyRs z_Ed448PrivateKey.public_keyr1cCs|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)Nr#zunsigned char[]r"r)r r'r2r)r$r3r4r5EVP_DigestSignInitr r%_ED448_SIG_SIZEr8EVP_DigestSignr*)rr1r;r.r,r-rrrsign]s*  z_Ed448PrivateKey.signrrencryption_algorithmcCsd|tjjus |tjjur&|tjjus|tjjust|tjs"td|S|j |||||j dS)NzcWhen using Raw both encoding and format must be Raw and encryption_algorithm must be NoEncryption()) rrrr PrivateFormat isinstance NoEncryptionr_raw_private_bytesr _private_key_bytesr )rrrrHrrr private_bytests    z_Ed448PrivateKey.private_bytescCr r!) r r$r%r&r'EVP_PKEY_get_raw_private_keyr r)r*r+rrrrLr/z#_Ed448PrivateKey._raw_private_bytesN)r=r>r?rrrCr@rGrrrIKeySerializationEncryptionrNrLrrrrrAMs  rAN) cryptographyrcryptography.hazmat.primitivesr/cryptography.hazmat.primitives.asymmetric.ed448rrr&rErrArrrrs  <