o
    b?	                     @   s   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
mZmZ e jeje
jejf Z	ddede je d	e je d
e je je e jej e jej f fddZde je de je de jej de je jej  dejd
efddZdS )    N)x509)_get_backend)Backend)serialization)dsaecrsadatapasswordbackendreturnc                 C   s   t |}|| |S N)r   Z%load_key_and_certificates_from_pkcs12)r	   r
   r    r   r/var/www/secure340b-portal/env/lib/python3.10/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.pyload_key_and_certificates   s   	r   namekeycertcasencryption_algorithmc                 C   s   |d urt |tjtjtjfstd|d ur!t |tj	s!td|d ur6t
|}tdd |D s6tdt |tjs@td|d u rN|d u rN|sNtdtd }|| ||||S )Nz3Key must be RSA, DSA, or EllipticCurve private key.zcert must be a certificatec                 s   s    | ]	}t |tjV  qd S r   )
isinstancer   Certificate).0valr   r   r   	<genexpr>7   s    z1serialize_key_and_certificates.<locals>.<genexpr>z&all values in cas must be certificateszFKey encryption algorithm must be a KeySerializationEncryption instancez1You must supply at least one of key, cert, or cas)r   r   RSAPrivateKeyr   DSAPrivateKeyr   EllipticCurvePrivateKey	TypeErrorr   r   listallr   KeySerializationEncryption
ValueErrorr   Z(serialize_key_and_certificates_to_pkcs12)r   r   r   r   r   r   r   r   r   serialize_key_and_certificates"   s4   

r#   r   )typingZcryptographyr   Zcryptography.hazmat.backendsr   Z'cryptography.hazmat.backends.interfacesr   Zcryptography.hazmat.primitivesr   Z)cryptography.hazmat.primitives.asymmetricr   r   r   Unionr   r   r   Z_ALLOWED_PKCS12_TYPESbytesOptionalTupler   Listr   Iterabler!   r#   r   r   r   r   <module>   sP   




