pg ddlZddlmZddlmZddlmZmZmZm Z ej rddl m Z GddeZ Gdd eZdS) N) exceptions) serialization)Ed25519PrivateKeyEd25519PublicKey_ED25519_KEY_SIZE_ED25519_SIG_SIZE)Backendc^eZdZd dZdejdejdefdZdefdZ d ed edd fd Z d S)_Ed25519PublicKeybackendr c"||_||_dSN_backend _evp_pkeyselfr evp_pkeys N/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/ed25519.py__init__z_Ed25519PublicKey.__init__ !encodingformatreturnc&|tjjus|tjjurI|tjjus|tjjurt d|S|j||||jdS)Nz3When using Raw both encoding and format must be Raw) rEncodingRaw PublicFormat ValueError_raw_public_bytesr_public_key_bytesr)rrrs r public_bytesz_Ed25519PublicKey.public_bytess  .2 2 23777 6 :::!;!??? I))++ +}.. fdDND   rc|jjdt}|jjdt}|jj|j||}|j|dk|j|dtk|jj|tddSNzunsigned char []size_t *r) r_ffinewr_libEVP_PKEY_get_raw_public_keyropenssl_assertbufferrbufbuflenress rr!z#_Ed25519PublicKey._raw_public_bytes0sm $$%79JKK#'' 4EFFm << NC   $$SAX... $$VAY2C%CDDD}!((.?@@CCr signaturedataNc |jj}|j||jjjk|jj||jjj}|jj||jjj|jjj|jjj|j }|j|dk|jj ||t||t|}|dkr%|j tjdS)Nr')rr*EVP_MD_CTX_newr,r(NULLgcEVP_MD_CTX_freeEVP_DigestVerifyInitrEVP_DigestVerifylen_consume_errorsrInvalidSignature)rr2r3 evp_md_ctxr1s rverifyz_Ed25519PublicKey.verify:s#]'6688  $$Z4=3E3J%JKKK]'**  *:  m 55  M  # M  # M  # N    $$SAX...m 11  3y>>4T   !88 M ) ) + + +- - 8rr r ) __name__ __module__ __qualname__rrrrbytesr#r!r?rrr r s"""" ( *       .D5DDDD..U.t......rr cteZdZddZdefdZdedefdZdej d ej d ej defd Z defd Z d S)_Ed25519PrivateKeyr r c"||_||_dSrrrs rrz_Ed25519PrivateKey.__init__Qrrrc|jjdt}|jjdt}|jj|j||}|j|dk|j|dtk|jj|dd}|j |Sr%) rr(r)rr*r+rr,r-ed25519_load_public_bytes)rr/r0r1r#s r public_keyz_Ed25519PrivateKey.public_keyUsm $$%79JKK#'' 4EFFm << NC   $$SAX... $$VAY2C%CDDD})0055aaa8 }66|DDDrr3c |jj}|j||jjjk|jj||jjj}|jj||jjj|jjj|jjj|j }|j|dk|jj dt}|jj dt|}|jj ||||t|}|j|dk|j|dtk|jj||dddS)Nr'zunsigned char[]r&r)rr*r5r,r(r6r7r8EVP_DigestSignInitrr)rr;EVP_DigestSignr-)rr3r>r1r/r0s rsignz_Ed25519PrivateKey.sign`s]'6688  $$Z4=3E3J%JKKK]'**  *:  m 33  M  # M  # M  # N    $$SAX...m $$%68IJJ#'' CHH==m // VT3t99   $$SAX... $$VAY2C%CDDD}!((fQi88;;rrrencryption_algorithmc\|tjjus|tjjurc|tjjus-|tjjust |tjstd|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)rrrrPs r private_bytesz _Ed25519PrivateKey.private_bytesws  .2 2 23777m9====#9#===!(-*D> !F **,, ,}// f2D$.$   rc|jjdt}|jjdt}|jj|j||}|j|dk|j|dtk|jj|tddSr%) rr(r)rr*EVP_PKEY_get_raw_private_keyrr,r-r.s rrUz%_Ed25519PrivateKey._raw_private_bytessm $$%79JKK#'' 4EFFm == NC   $$SAX... $$VAY2C%CDDD}!((.?@@CCrNr@)rArBrCrrrKrDrOrrrRKeySerializationEncryptionrWrUrErrrGrGPs"""" E, E E E E<<5<<<<. ( + ,F       8DEDDDDDDrrG)typing cryptographyrcryptography.hazmat.primitivesr1cryptography.hazmat.primitives.asymmetric.ed25519rrrr TYPE_CHECKING,cryptography.hazmat.backends.openssl.backendr r rGrErrras  ######888888 EDDDDDD9.9.9.9.9.(9.9.9.xKDKDKDKDKD*KDKDKDKDKDr