o
    j                     @   s2   d dl Z d dlmZ d dlmZ G dd dZdS )    N)ec)default_backendc                   @   sL   e Zd Zdd Zedd Zedd Zdd Zd	d
 Zdd Z	dd Z
dS )ECDHPrivateKeyBlobc                 C   s"   d | _ d | _d | _d | _d | _d S N)magiclengthxy
privateexpself r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/winacl/dtyp/wcee/ecdhprivkey.py__init__   s
   
zECDHPrivateKeyBlob.__init__c                 C   s   t t| S r   )r   from_bufferioBytesIO)datar   r   r   
from_bytes   s   zECDHPrivateKeyBlob.from_bytesc                 C   s   t  }tj| dddd|_tj| dddd|_tj| |jddd|_tj| |jddd|_tj| |jddd|_|S )N   littleF	byteordersigned)	r   intr   readr   r   r   r	   r
   )buffpkr   r   r   r      s   zECDHPrivateKeyBlob.from_bufferc                 C   sT   | j dv r	t S | j dv rt S | j dv rt S td| j jdddd  )	N)iECK1iECK2iECS1iECS2)iECK3iECK4iECS3iECS4)iECK5iECK6iECS5iECS6zUnknown curve type for %sr   r   Fr   )r   r   	SECP256R1	SECP384R1	SECP521R1	Exceptionto_byteshexr   r   r   r   	get_curve   s   


zECDHPrivateKeyBlob.get_curvec                 C   s8   |   }tj| jtj| j| j|dd}|t }|S )Nr   r	   curve)private_valuepublic_numbers)	r$   r   EllipticCurvePrivateNumbersr
   EllipticCurvePublicNumbersr   r	   private_keyr   )r   r&   private_numbersr+   r   r   r   get_key&   s   zECDHPrivateKeyBlob.get_keyc                 C   s,   |   }tj| j| j|d}|t }|S )Nr%   )r$   r   r*   r   r	   
public_keyr   )r   r&   r(   r.   r   r   r   
get_pubkey4   s   zECDHPrivateKeyBlob.get_pubkeyc                 C   s*   d}| j D ]}|d|| j | f 7 }q|S )N z%s: %s
)__dict__)r   tkr   r   r   __str__@   s   
zECDHPrivateKeyBlob.__str__N)__name__
__module____qualname__r   staticmethodr   r   r$   r-   r/   r4   r   r   r   r   r      s    

	
r   )r   )cryptography.hazmat.primitives.asymmetricr   cryptography.hazmat.backendsr   r   r   r   r   r   <module>   s    