£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
3
l_=                 @   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 |}|j| |S )N)r   Z%load_key_and_certificates_from_pkcs12)dataZpasswordbackend r   /usr/lib64/python3.6/pkcs12.pyload_key_and_certificates   s    r   c             C   s   |d k	r(t |tjtjtjf r(td|d k	rFt |tj	 rFtd|d k	rpt
|}tdd |D sptdt |tjstd|d kr|d kr| rtdtd }|j| ||||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>!   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keyZcertZcasZencryption_algorithmr   r   r   r   serialize_key_and_certificates   s*    

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   
