U
    *”}f=  ã                   @   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)ÚdataÚpasswordÚbackend© r   úW/tmp/pip-unpacked-wheel-x36vw73o/cryptography/hazmat/primitives/serialization/pkcs12.pyÚload_key_and_certificates   s    r   c                 C   s¶   |d k	r&t |tjtjtjfƒs&tdƒ‚|d k	rBt |tj	ƒsBtdƒ‚|d k	rlt
|ƒ}tdd„ |D ƒƒsltdƒ‚t |tjƒs€tdƒ‚|d krœ|d k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>!   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
   ZRSAPrivateKeyWithSerializationr   ZDSAPrivateKeyWithSerializationr	   Z(EllipticCurvePrivateKeyWithSerializationÚ	TypeErrorr   r   ÚlistÚallr   ZKeySerializationEncryptionÚ
ValueErrorr   Z(serialize_key_and_certificates_to_pkcs12)ÚnameÚkeyÚcertZcasZencryption_algorithmr   r   r   r   Úserialize_key_and_certificates   s>    
ýþ ÿÿ    ÿr   )N)Ú
__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   
