o
    j                     @   sH   d dl Z d dlZd dlmZ d dlmZ G dd dZG dd dZdS )    N)rsa)default_backendc                   @   D   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S )RSAPrivateKeyBlobc                 C   sX   d | _ d | _d | _d | _d | _d | _d | _d | _d | _d | _	d | _
d | _d | _d | _d S N)typeversionreservedkeyalgmagicbitlenpubexpmoduluspqdpdqiqdself r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/winacl/dtyp/wcee/rsaprivkey.py__init__	   s   
zRSAPrivateKeyBlob.__init__c                 C      t t| S r   )r   from_bufferioBytesIOdatar   r   r   
from_bytes      zRSAPrivateKeyBlob.from_bytesc                 C   sr  t  }| dd |_| dd |_tj| dddd|_tj| dddd|_tj| dddd|_tj| dddd|_	tt
|j	d }tt
|j	d	 }tj| dddd|_tj| |ddd|_tj| |ddd|_tj| |ddd|_tj| |ddd|_tj| |ddd|_tj| |ddd|_tj| |ddd|_|S )
N   r      littleF)	byteordersigned         )r   readr   r   intr    r	   r
   r   r   mathceilr   r   r   r   r   r   r   r   )buffpkc8c16r   r   r   r      s$   zRSAPrivateKeyBlob.from_bufferc              	   C   sB   t | j| j}t | j| j| j| j| j	| j
|}t j|ddS )NFunsafe_skip_rsa_key_validation)r   RSAPublicNumbersr   r   RSAPrivateNumbersr   r   r   r   r   r   r   load_rsa_private_numbers)r   public_numbersnumbersr   r   r   get_key2   s   "zRSAPrivateKeyBlob.get_keyc                 C      t | j| j}t |S r   r   r4   r   r   r   load_rsa_public_numbersr   r7   r   r   r   
get_pubkey7      zRSAPrivateKeyBlob.get_pubkeyc                 C   *   d}| j D ]}|d|| j | f 7 }q|S N z%s: %s
__dict__r   tkr   r   r   __str__;      
zRSAPrivateKeyBlob.__str__N
__name__
__module____qualname__r   staticmethodr    r   r9   r>   rH   r   r   r   r   r      s    

r   c                   @   r   )BCRYPTRSAKeyBlobc                 C   s@   d | _ d | _d | _d | _d | _d | _d | _d | _d | _d | _	d S r   )
r   r   	pubexplen
moduluslenplenqlenr   r   r   r   r   r   r   r   r   C   s   
zBCRYPTRSAKeyBlob.__init__c                 C   r   r   )rO   r   r   r   r   r   r   r   r    O   r!   zBCRYPTRSAKeyBlob.from_bytesc                 C   s   t  }| d|_tj| dddd|_tj| dddd|_tj| dddd|_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|_tj| |j	ddd|_|S )Nr'   r$   F)r&   big)rO   r*   r   r+   r    r   rP   rQ   rR   rS   r   r   r   r   )r.   r/   r   r   r   r   S   s   zBCRYPTRSAKeyBlob.from_bufferc                 C   s   | j d | jd  }t| j|}t|| j }t|| j}t| j | j}tj| j | j||||tj	| j| j
dd}t j|ddS )Nr"   )en)r   r   r   dmp1dmq1iqmpr7   Fr2   )r   r   r   _modinvr   rsa_crt_dmp1rsa_crt_dmq1rsa_crt_iqmpr5   r4   r   r   r6   )r   phir   rW   rX   rY   r8   r   r   r   r9   b   s$   zBCRYPTRSAKeyBlob.get_keyc                 C   r:   r   r;   r=   r   r   r   r>   v   r?   zBCRYPTRSAKeyBlob.get_pubkeyc                 C   r@   rA   rC   rE   r   r   r   rH   z   rI   zBCRYPTRSAKeyBlob.__str__NrJ   r   r   r   r   rO   B   s    

rO   )r   r,   )cryptography.hazmat.primitives.asymmetricr   cryptography.hazmat.backendsr   r   rO   r   r   r   r   <module>   s    :