a
    Ç `=  ã                   @   sb   d dl mZmZ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 ddd„Zd	d
„ ZdS )é    )Úabsolute_importÚdivisionÚprint_function)Úx509)Ú_get_backend)Úserialization)ÚdsaÚecÚrsaNc                 C   s   t |ƒ}| | |¡S ©N)r   Z%load_key_and_certificates_from_pkcs12)ÚdataZpasswordÚbackend© r   úU/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/serialization/pkcs12.pyÚload_key_and_certificates   s    r   c                 C   s¶   |d ur&t |tjtjtjfƒs&tdƒ‚|d urBt |tj	ƒsBtdƒ‚|d urlt
|ƒ}tdd„ |D ƒƒsltdƒ‚t |tjƒs€tdƒ‚|d u rœ|d u rœ|sœt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>!   ó    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
   ZRSAPrivateKeyWithSerializationr   ZDSAPrivateKeyWithSerializationr	   Z(EllipticCurvePrivateKeyWithSerializationÚ	TypeErrorr   r   ÚlistÚallr   ZKeySerializationEncryptionÚ
ValueErrorr   Z(serialize_key_and_certificates_to_pkcs12)ÚnameÚkeyZcertZcasZencryption_algorithmr   r   r   r   Úserialize_key_and_certificates   s4    
ýþÿÿ
ÿr   )N)Z
__future__r   r   r   Zcryptographyr   Zcryptography.hazmat.backendsr   Zcryptography.hazmat.primitivesr   Z)cryptography.hazmat.primitives.asymmetricr   r	   r
   r   r   r   r   r   r   Ú<module>   s   
