o
    Þý°jJ  ã                   @   s8   d dl mZmZmZmZmZ dd„ Zdd„ Zdd„ ZdS )	é    )ÚDerSequenceÚ
DerIntegerÚDerBitStringÚDerObjectIdÚDerNullc                 C   sŽ   t ƒ j| dd�}t ƒ j|d dd�}tƒ  |d ¡}tƒ  |d ¡j}t|ƒdkr,d}nztƒ  |d ¡ d}W n   |d }Y |j||fS )z¶Parse a SubjectPublicKeyInfo structure.

    It returns a triple with:
        * OID (string)
        * encoded public key (bytes)
        * Algorithm parameters (bytes or None)
    é   ©Únr_elementsr   )é   r   r
   N)r   Údecoder   r   ÚvalueÚlenr   )ÚencodedÚspkiÚalgoÚalgo_oidÚspkÚalgo_params© r   ú�/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/Cryptodome/PublicKey/__init__.pyÚ_expand_subject_public_key_info   s   
r   c                 C   s@   |d u rt t| ƒgƒ}nt t| ƒ|gƒ}t |t|ƒgƒ}| ¡ S )N)r   r   r   Úencode)r   Ú
public_keyÚparamsÚ	algorithmr   r   r   r   Ú_create_subject_public_key_info?   s   ÿr   c                 C   sŒ   t ƒ j| dd�}t ƒ j|d tddƒd�}d}z|d d  d}W || S  tyE   tdd� |d ¡j}|d	vr>td
ƒ‚d}Y || S w )z:Extract subjectPublicKeyInfo from a DER X.509 certificate.é   r   r   é   é   é   r
   )Úexplicit)r   r   z#Incorrect X.509 certificate version)r   r   ÚrangeÚ	TypeErrorr   r   Ú
ValueError)Úx509_certificateÚcertificateÚtbs_certificateÚindexÚversionr   r   r   Ú _extract_subject_public_key_infoL   s    ÿúúr)   N)	ÚCryptodome.Util.asn1r   r   r   r   r   r   r   r)   r   r   r   r   Ú<module>   s   &