
    ]f_
                         d Z ddlmZmZ ddlmZmZ dZ G d dej                  Z	 G d dej                  Z
 G d	 d
ej                  Zd Zd Zd Z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                       e Zd ZdZ ej         ej        d ej                               ej        d ej	                                        Z
dS )RsaAlgorithmIdentifierzAASN1 structure for recording RSA PrivateKeyAlgorithm identifiers.rsaEncryption
parametersN)__name__
__module____qualname____doc__r   
NamedTypes	NamedTyper   ObjectIdentifierNullcomponentType     E/var/www/html/env/lib/python3.11/site-packages/jose/backends/_asn1.pyr   r      sf        KK(I(	O-BT-B-D-DEEGZyGZ[girimirititGuGu MMMr   r   c            	           e Zd ZdZ ej         ej        d ej                               ej        d e	                       ej        d ej
                                        ZdS )PKCS8PrivateKeyz0ASN1 structure for recording PKCS8 private keys.versionprivateKeyAlgorithm
privateKeyN)r   r   r   r   r   r   r   r   Integerr   OctetStringr   r   r   r   r   r      s}        ::(I(	I|t|~~66	13I3I3K3KLL	L*:$*:*<*<== MMMr   r   c                       e Zd ZdZ ej         ej        d e                       ej        d ej	                                        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      sd        99(I(	K)?)?)A)ABBDWIDWXceseieseueuDvDv MMMr   r   c                     t          j        | t                                }	 |d         }n# t          $ r t	          d          w xY w|d         S )1Convert a PKCS8-encoded RSA private key to PKCS1.asn1Specr   zInvalid private key encodingr   )r   decoder   
IndexError
ValueError	pkcs8_keydecoded_valuesdecoded_keys      r   rsa_private_key_pkcs8_to_pkcs1r.   %   sd    ^I8I8IJJJN9$Q' 9 9 978889 |$$	   - Ac                     t                      }t          |d<   t                      }d|d<   ||d<   | |d<   t          j        |          S )1Convert a PKCS1-encoded RSA private key to PKCS8.r	   r   r   r   r   )r   RSA_ENCRYPTION_ASN1_OIDr   r   encode	pkcs1_keyr    r+   s      r   rsa_private_key_pkcs1_to_pkcs8r6   1   sQ    &((I!8Io!!IIi'0I#$'Il>)$$$r   c                     t                      }t          |d<   t                      }||d<   t          j                            |           |d<   t          j        |          S )r1   r	   r    r!   )r   r2   r   r   r"   fromOctetStringr   r3   r4   s      r   rsa_public_key_pkcs1_to_pkcs8r9   >   sT    &((I!8IoI&Ik!^;;IFFIk>)$$$r   c                     t          j        | t                                }	 |d         }n# t          $ r t	          d          w xY w|d                                         S )r$   r%   r   zInvalid public key encoding.r!   )r   r'   r   r(   r)   asOctetsr*   s      r   rsa_public_key_pkcs8_to_pkcs1r<   J   sn    ^IHHHN9$Q' 9 9 978889 {#,,...r/   N)r   pyasn1.codec.derr   r   pyasn1.typer   r   r2   Sequencer   r   r   r.   r6   r9   r<   r   r   r   <module>r@      s    . - - - - - - - ' ' ' ' ' ' ' '0     T]       dm       DM   	% 	% 	%
% 
% 
%	% 	% 	%	/ 	/ 	/ 	/ 	/r   