File: //usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/__pycache__/ec.cpython-38.pyc
U
�e�].1 � @ s d dl mZmZmZ d dlmZ d dlmZmZm Z d dl
mZmZm
Z
d dlmZmZ d dlmZmZmZ dd� Zd d
� Zdd� Zd
d� Zdd� Zdd� Ze�e�G dd� de��Ze�e�G dd� de��Ze�ej�G dd� de��Z e�ej!�G dd� de��Z"dS )� )�absolute_import�division�print_function)�utils)�InvalidSignature�UnsupportedAlgorithm�_Reasons)�_calculate_digest_and_algorithm�_check_not_prehashed�_warn_sign_verify_deprecated)�hashes�
serialization)�AsymmetricSignatureContext�AsymmetricVerificationContext�ecc C s t | tj�stdtj��d S )Nz/Unsupported elliptic curve signature algorithm.)�
isinstancer ZECDSAr r Z UNSUPPORTED_PUBLIC_KEY_ALGORITHM)�signature_algorithm� r �I/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/ec.py�_check_signature_algorithm s
�r c C s� | j �|�}| �|| jjk� | j �|�}|| j jkr>td��| j jr^| j � |�dkr^td��| j �
|�}| �|| jjk� | j�|��d�}|S )Nz;ECDSA keys with unnamed curves are unsupported at this timer �ascii)
�_lib�EC_KEY_get0_group�openssl_assert�_ffi�NULL�EC_GROUP_get_curve_nameZ NID_undef�NotImplementedErrorZ#CRYPTOGRAPHY_OPENSSL_110_OR_GREATERZEC_GROUP_get_asn1_flagZ
OBJ_nid2sn�string�decode)�backendZec_key�groupZnidZ
curve_name�snr 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_curve<