o
    )%a                     @   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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 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)serialization)dsaecrsadatapasswordreturnc                 C   s   t |}|| |S N)r   %load_key_and_certificates_from_pkcs12)r   r	   backend r   U/usr/lib/python3/dist-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>4   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   (serialize_key_and_certificates_to_pkcs12)r   r   r   r   r   r   r   r   r   serialize_key_and_certificates   s4   

r$   r   )typingcryptographyr   cryptography.hazmat.backendsr   cryptography.hazmat.primitivesr   )cryptography.hazmat.primitives.asymmetricr   r   r   Unionr   r   r   _ALLOWED_PKCS12_TYPESbytesOptionalTupler   Listr   Iterabler!   r$   r   r   r   r   <module>   sJ   



