a °…b ã@snddlZddlmZddlmZddlmZmZmZm Z ej rJddl m Z Gdd„deƒZ Gdd „d eƒZdS) éN)Ú exceptions)Ú serialization)ÚEd25519PrivateKeyÚEd25519PublicKeyÚ_ED25519_KEY_SIZEÚ_ED25519_SIG_SIZE)ÚBackendc@sPeZdZddœdd„Zejejedœdd„Zedœd d „Z eed d œd d„Z d S)Ú_Ed25519PublicKeyr©ÚbackendcCs||_||_dS©N©Ú_backendÚ _evp_pkey©Úselfr Zevp_pkey©rúS/tmp/pip-target-98j97qn4/lib/python/cryptography/hazmat/backends/openssl/ed25519.pyÚ__init__sz_Ed25519PublicKey.__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_Ed25519PublicKey.public_bytes©rcCsp|jj dt¡}|jj dt¡}|jj |j||¡}|j |dk¡|j |dtk¡|jj |t¡dd…S©Nzunsigned char []úsize_t *ér) rÚ_ffiÚnewrÚ_libÚEVP_PKEY_get_raw_public_keyrÚopenssl_assertÚbuffer©rÚbufÚbuflenÚresrrrr0sÿz#_Ed25519PublicKey._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_Ed25519PublicKey.verify) Ú__name__Ú __module__Ú __qualname__rrrrÚbytesrrr4rrrrr sü  r c@s`eZdZddœdd„Zedœdd„Zeedœd d „Zej ej ej ed œd d „Z edœdd„Z dS)Ú_Ed25519PrivateKeyrr cCs||_||_dSr r rrrrrQsz_Ed25519PrivateKey.__init__rcCsz|jj dt¡}|jj dt¡}|jj |j||¡}|j |dk¡|j |dtk¡|jj |¡dd…}|j  |¡Sr) rr"r#rr$r%rr&r'Zed25519_load_public_bytes)rr)r*r+rrrrÚ public_keyUsÿz_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 ||d¡dd…S)Nr!zunsigned char[]r r)rr$r.r&r"r/r0r1ZEVP_DigestSignInitrr#rr2ZEVP_DigestSignr')rr-r3r+r)r*rrrÚsign`s*  ÿûÿz_Ed25519PrivateKey.sign)rrÚencryption_algorithmrcCsd|tjjus|tjjurL|tjjus<|tjjuss   <