
    uZh_
                         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y)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
y)RsaAlgorithmIdentifierzAASN1 structure for recording RSA PrivateKeyAlgorithm identifiers.rsaEncryption
parametersN)__name__
__module____qualname____doc__r   
NamedTypes	NamedTyper   ObjectIdentifierNullcomponentType     o/var/www/html/wine-match-dev/backend/winematch-backend/venv/lib/python3.12/site-packages/jose/backends/_asn1.pyr   r      sU    K(I((	O-BT-B-B-DEGZyGZGZ[girimiriritGuMr   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y)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      sf    :(I((	I|t||~6	13I3KL	L*:$*:*:*<=Mr   r   c                       e Zd ZdZ ej
                   ej                  d e              ej                  d ej                                     Z
y)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      sM    9(I((	K)?)ABDWIDWDWXceseieseseuDvMr   r   c                     t        j                  | t                     }	 |d   }|d   S # t        $ r t	        d      w xY w)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.   %   sN    ^^I8IJN9$Q' |$$  97889s	   + 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_pkcs8r5   1   sJ    &(I!8Io!IIi'0I#$'Il>>)$$r   c                     t               }t        |d<   t               }||d<   t        j                  j                  |       |d<   t        j                  |      S )r0   r	   r    r!   )r   r1   r   r   r"   fromOctetStringr   r2   r3   s      r   rsa_public_key_pkcs1_to_pkcs8r8   >   sM    &(I!8IoI&Ik!^^;;IFIk>>)$$r   c                     t        j                  | t                     }	 |d   }|d   j                         S # t        $ r t	        d      w xY w)r$   r%   r   zInvalid public key encoding.r!   )r   r'   r   r(   r)   asOctetsr*   s      r   rsa_public_key_pkcs8_to_pkcs1r;   J   sV    ^^IHN9$Q' {#,,..  97889s	   9 AN)r   pyasn1.codec.derr   r   pyasn1.typer   r   r1   Sequencer   r   r   r.   r5   r8   r;   r   r   r   <module>r?      s\    . '0 T]] dmm DMM 	%
%	%	/r   