o
    vh                     @   s   d dl mZ d dlmZmZmZ d dlmZ ddlm	Z	 g dZ
dd Zd	efd
dZdd Zdee dejfddZdedee dejfddZdS )    )Optional)keyspemx509)serialization   )'translate_pyca_cryptography_key_to_asn1)load_cert_from_pemderload_certs_from_pemderload_certs_from_pemder_dataload_private_key_from_pemder!load_private_key_from_pemder_datac              	   c   sP    | D ]"}t |d}| }W d   n1 sw   Y  t|E dH  qd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_bytes r   Q/var/www/html/hyperkenya/venv/lib/python3.10/site-packages/pyhanko/keys/pemder.pyr
      s   	
r
   r   c                 c   sb    t | r(t j| dd}|D ]\}}}|du s| dkr%tj|V  qd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certificate)r   detectunarmorlowerr   Certificateload)r   pems	type_name_derr   r   r   r       s   
r   c                 C   s2   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.
    r   zNumber of certs in z should be exactly 1r   )listr
   len
ValueError)r   certsr   r   r   r	   7   s   
r	   
passphrasereturnc                 C   s>   t | d}| }W d   n1 sw   Y  t||d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_bytesr   r   r   r   G   s   
r   r)   c                 C   s&   t | rtjntj}t|| |d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_keyr   )r)   r&   load_funr   r   r   r   Y   s   
r   N)typingr   
asn1cryptor   r   r   cryptography.hazmat.primitivesr   internalr   __all__r
   bytesr   r	   PrivateKeyInfor   r   r   r   r   r   <module>   s(    	
