
     h                         d Z ddlZddlmZ ddlmZmZmZ ddlm	Z	 g dZ
 ej        e          Zd Zdefd	Zd
 Zdee         dej        fdZdedee         dej        fdZdej        fdZdej        fdZdS )z/
Utility module to load keys and certificates.
    N)Optional)keyspemx509)serialization)load_cert_from_pemderload_certs_from_pemderload_certs_from_pemder_dataload_private_key_from_pemder!load_private_key_from_pemder_datac              #      K   | D ]S}t          |d          5 }|                                }ddd           n# 1 swxY w Y   t          |          E d{V  TdS )z
    A convenience function to load PEM/DER-encoded certificates from files.

    :param cert_files:
        An iterable of file names.
    :return:
        A generator producing :class:`.asn1crypto.x509.Certificate` objects.
    rbN)openreadr
   )
cert_files	cert_filefcert_data_bytess       H/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/pyhanko/keys.pyr	   r	      s         @ @	)T"" 	'affhhO	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'.??????????@ @s   8<	<	r   c              #   j  K   t          j        |           r{t          j        | d          }|D ]`\  }}}||                                dk    r"t          j                            |          V  Bt                              d| d           adS t          j                            |           V  dS )a  
    A convenience function to load PEM/DER-encoded certificates from
    binary data.

    :param cert_data_bytes:
        ``bytes`` object from which to extract certificates.
    :return:
        A generator producing :class:`.asn1crypto.x509.Certificate` objects.
    T)multipleNcertificatezSkipping PEM block of type z in CA chain file.)	r   detectunarmorlowerr   Certificateloadloggerdebug)r   pems	type_name_ders        r   r
   r
   %   s       z/"" 5{?T:::!% 	 	Iq# IOO$5$5$F$F&++C000000&) & & &   		 	 ##O4444444    c                     t          t          | g                    }t          |          dk    rt          d|  d          |d         S )z
    A convenience function to load a single PEM/DER-encoded certificate
    from a file.

    :param cert_file:
        A file name.
    :return:
        An :class:`.asn1crypto.x509.Certificate` object.
       zNumber of certs in z should be exactly 1r   )listr	   len
ValueError)r   certss     r   r   r   A   sN     '4455E
5zzQNyNNNOOO8Or$   
passphrasereturnc                     t          | d          5 }|                                }ddd           n# 1 swxY w Y   t          ||          S )a  
    A convenience function to load PEM/DER-encoded keys from files.

    :param key_file:
        File to read the key from.
    :param passphrase:
        Key passphrase.
    :return:
        A private key encoded as an unencrypted PKCS#8 PrivateKeyInfo object.
    r   N)r+   )r   r   r   )key_filer+   r   	key_bytess       r   r   r   Q   s     
h		 FFHH	              ,Y:NNNNs   266r/   c                     t          j        |           rt          j        nt          j        }t           || |                    S )a  
    A convenience function to load PEM/DER-encoded keys from binary data.

    :param key_bytes:
        ``bytes`` object to read the key from.
    :param passphrase:
        Key passphrase.
    :return:
        A private key encoded as an unencrypted PKCS#8 PrivateKeyInfo object.
    )password)r   r   r   load_pem_private_keyload_der_private_key(_translate_pyca_cryptography_key_to_asn1)r/   r+   load_funs      r   r   r   c   sO     :i  	0**/ 
 4Z000  r$   c                     t           j                            |                     t          j        j        t          j        j        t	          j	                                        S N)
r   PrivateKeyInfor   private_bytesr   EncodingDERPrivateFormatPKCS8NoEncryption)private_keys    r   r4   r4   z   sP     ##!!"&'-&((	
 	
  r$   c                     t           j                            |                     t          j        j                            S r7   )r   r   r   public_bytesr   r:   r;   )certs    r   )_translate_pyca_cryptography_cert_to_asn1rC      s-      !2!2=3I3M!N!NOOOr$   )__doc__loggingtypingr   
asn1cryptor   r   r   cryptography.hazmat.primitivesr   __all__	getLogger__name__r   r	   bytesr
   r   r8   r   r   r4   r   rC    r$   r   <module>rN      so           & & & & & & & & & & 8 8 8 8 8 8   
	8	$	$@ @ @5 5 5 5 58   O"5/O	O O O O$"*5/	   .	   ,Pt7G P P P P P Pr$   