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m	Z	m
Z
 e je
jeje	jf Zdee je e je je e jej e jej f dœdd„Ze je e je e jej e je jej  ejed	œd
d„ZdS )é    N)Úx509)Ú_get_backend)Úserialization)ÚdsaÚecÚrsa)ÚdataÚpasswordÚreturnc             C   s   t |ƒ}| | |¡S )N)r   Z%load_key_and_certificates_from_pkcs12)r   r	   Úbackend© r   úb/home/dcms/DCMS/lib/python3.7/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.pyÚload_key_and_certificates   s    r   )ÚnameÚkeyÚcertÚcasÚencryption_algorithmr
   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 )N)Ú
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   Z(serialize_key_and_certificates_to_pkcs12)r   r   r   r   r   r   r   r   r   Úserialize_key_and_certificates   s*    


r!   )N)ÚtypingZcryptographyr   Zcryptography.hazmat.backendsr   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>   s&   


