a °…bòã@snddlZddlmZddlmZddlmZmZejrBddl m Z dZ dZ Gdd „d eƒZ Gd d „d eƒZdS) éN)Ú exceptions)Ú serialization)ÚEd448PrivateKeyÚEd448PublicKey)ÚBackendé9érc@sPeZdZddœdd„Zejejedœdd„Zedœd d „Z eed d œd d„Z d S)Ú_Ed448PublicKeyr©ÚbackendcCs||_||_dS©N©Ú_backendÚ _evp_pkey©Úselfr Zevp_pkey©rúQ/tmp/pip-target-98j97qn4/lib/python/cryptography/hazmat/backends/openssl/ed448.pyÚ__init__sz_Ed448PublicKey.__init__)ÚencodingÚformatÚreturncCsV|tjjus|tjjur@|tjjus0|tjjur8tdƒ‚| ¡S|j ||||jd¡S)Nz3When using Raw both encoding and format must be Raw) rÚEncodingÚRawÚ PublicFormatÚ ValueErrorÚ_raw_public_bytesrZ_public_key_bytesr)rrrrrrÚ public_bytess ÿ þ ÿ þÿ ÿz_Ed448PublicKey.public_bytes©rcCsp|jj dt¡}|jj dt¡}|jj |j||¡}|j |dk¡|j |dtk¡|jj |t¡dd…S©Nzunsigned char []úsize_t *ér) rÚ_ffiÚnewÚ_ED448_KEY_SIZEÚ_libÚEVP_PKEY_get_raw_public_keyrÚopenssl_assertÚbuffer©rÚbufÚbuflenÚresrrrr1sÿz!_Ed448PublicKey._raw_public_bytesN)Ú signatureÚdatarcCs¬|jj ¡}|j ||jjjk¡|jj ||jjj¡}|jj ||jjj|jjj|jjj|j ¡}|j |dk¡|jj  ||t |ƒ|t |ƒ¡}|dkr¨|j  ¡t j‚dS)Nr!)rr%ÚEVP_MD_CTX_newr'r"ÚNULLÚgcÚEVP_MD_CTX_freeZEVP_DigestVerifyInitrZEVP_DigestVerifyÚlenZ_consume_errorsrZInvalidSignature)rr-r.Ú evp_md_ctxr,rrrÚverify;s&  ÿûÿ z_Ed448PublicKey.verify) Ú__name__Ú __module__Ú __qualname__rrrrÚbytesrrr5rrrrr sü  r c@s`eZdZddœdd„Zedœdd„Zeedœd d „Zej ej ej ed œd d „Z edœdd„Z dS)Ú_Ed448PrivateKeyrr cCs||_||_dSr r rrrrrRsz_Ed448PrivateKey.__init__rcCsz|jj dt¡}|jj dt¡}|jj |j||¡}|j |dk¡|j |dtk¡|jj |¡dd…}|j  |¡Sr) rr"r#r$r%r&rr'r(Zed448_load_public_bytes)rr*r+r,rrrrÚ public_keyVsÿz_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 ||d¡dd…S)Nr!zunsigned char[]r r)rr%r/r'r"r0r1r2ZEVP_DigestSignInitrr#Ú_ED448_SIG_SIZEr3ZEVP_DigestSignr()rr.r4r,r*r+rrrÚsignas*  ÿûÿz_Ed448PrivateKey.sign)rrÚencryption_algorithmrcCsd|tjjus|tjjurL|tjjus<|tjjusrrrÚ private_bytesxs& ÿ þ ÿ þÿýÿÿz_Ed448PrivateKey.private_bytescCsp|jj dt¡}|jj dt¡}|jj |j||¡}|j |dk¡|j |dtk¡|jj |t¡dd…Sr) rr"r#r$r%ZEVP_PKEY_get_raw_private_keyrr'r(r)rrrrA”sÿz#_Ed448PrivateKey._raw_private_bytesN)r6r7r8rrr;r9r=rrr?ZKeySerializationEncryptionrBrArrrrr:Qs û r:)ÚtypingZ cryptographyrZcryptography.hazmat.primitivesrZ/cryptography.hazmat.primitives.asymmetric.ed448rrÚ TYPE_CHECKINGZ,cryptography.hazmat.backends.openssl.backendrr$r<r r:rrrrÚs   <