o
    6d_
                     @   s   d Z ddlmZmZ ddlmZmZ dZG dd dejZ	G dd dejZ
G d	d
 d
ejZdd Zdd Zdd Zdd ZdS )zuASN1 encoding helpers for converting between PKCS1 and PKCS8.

Required by rsa_backend but not cryptography_backend.
    )decoderencoder)	namedtypeunivz1.2.840.113549.1.1.1c                   @   s4   e Zd ZdZeede ede	 Z
dS )RsaAlgorithmIdentifierzAASN1 structure for recording RSA PrivateKeyAlgorithm identifiers.rsaEncryption
parametersN)__name__
__module____qualname____doc__r   
NamedTypes	NamedTyper   ZObjectIdentifierZNullcomponentType r   r   jC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\jose/backends/_asn1.pyr      s
    r   c                	   @   s@   e Zd ZdZeede ede	 ede
 ZdS )PKCS8PrivateKeyz0ASN1 structure for recording PKCS8 private keys.versionprivateKeyAlgorithm
privateKeyN)r	   r
   r   r   r   r   r   r   Integerr   ZOctetStringr   r   r   r   r   r      s    r   c                   @   s2   e Zd ZdZeede ede	 Z
dS )PublicKeyInfoz/ASN1 structure for recording PKCS8 public keys.	algorithm	publicKeyN)r	   r
   r   r   r   r   r   r   r   	BitStringr   r   r   r   r   r      s
    r   c                 C   s:   t j| t d}z	|d }W |d S  ty   tdw )1Convert a PKCS8-encoded RSA private key to PKCS1.Zasn1Specr   zInvalid private key encodingr   )r   decoder   
IndexError
ValueError	pkcs8_keyZdecoded_valuesZdecoded_keyr   r   r   rsa_private_key_pkcs8_to_pkcs1%   s   
r"   c                 C   s6   t  }t|d< t }d|d< ||d< | |d< t|S )1Convert a PKCS1-encoded RSA private key to PKCS8.r   r   r   r   r   )r   RSA_ENCRYPTION_ASN1_OIDr   r   encodeZ	pkcs1_keyr   r!   r   r   r   rsa_private_key_pkcs1_to_pkcs81   s   
r'   c                 C   s6   t  }t|d< t }||d< tj| |d< t|S )r#   r   r   r   )r   r$   r   r   r   ZfromOctetStringr   r%   r&   r   r   r   rsa_public_key_pkcs1_to_pkcs8>   s   
r(   c                 C   s@   t j| t d}z|d }W n ty   tdw |d  S )r   r   r   zInvalid public key encoding.r   )r   r   r   r   r   ZasOctetsr    r   r   r   rsa_public_key_pkcs8_to_pkcs1J   s   r)   N)r   Zpyasn1.codec.derr   r   Zpyasn1.typer   r   r$   Sequencer   r   r   r"   r'   r(   r)   r   r   r   r   <module>   s    
