a a.2 @ s d dl mZ d dlmZmZmZ d dlmZmZm Z m Z d dlmZm Z d dlmZmZmZ ejdddZd d Zdd Zd d Zdd Zdd ZG dd deZG dd deZG dd dejZG dd dejZdS ) )utils)InvalidSignatureUnsupportedAlgorithm_Reasons)_calculate_digest_and_algorithm_check_not_prehashed_evp_pkey_derive_warn_sign_verify_deprecated)hashes serialization)AsymmetricSignatureContextAsymmetricVerificationContextecsignature_algorithmc C s t | tjstdtjd S )Nz/Unsupported elliptic curve signature algorithm.) isinstancer ZECDSAr r Z UNSUPPORTED_PUBLIC_KEY_ALGORITHMr r M/usr/lib64/python3.9/site-packages/cryptography/hazmat/backends/openssl/ec.py_check_signature_algorithm s r c C s | j |}| || jjk | j |}|| j jkr>td| j js^| j |dkr^td| j |}| || jjk | j|d}|S )Nz@ECDSA keys with explicit parameters are unsupported at this timer ascii) _libEC_KEY_get0_groupopenssl_assert_ffiNULLEC_GROUP_get_curve_nameZ NID_undef ValueErrorZCRYPTOGRAPHY_IS_LIBRESSLZEC_GROUP_get_asn1_flagZ OBJ_nid2snstringdecode)backendZec_keygroupZnidZ curve_namesnr r r _ec_key_curve_sn$ s$ r" c C s | j || j j dS )z Set the named curve flag on the EC_KEY. This causes OpenSSL to serialize EC keys along with their curve OID which makes deserialization easier. N)r ZEC_KEY_set_asn1_flagZOPENSSL_EC_NAMED_CURVE)r Zec_cdatar r r _mark_asn1_named_ec_curveB s r# c C s8 zt j| W S ty2 td|tjY n0 d S )Nz${} is not a supported elliptic curve)r Z_CURVE_TYPESKeyErrorr formatr ZUNSUPPORTED_ELLIPTIC_CURVE)r r! r r r _sn_to_elliptic_curveN s r&