U
    „
;gŒ  ã                   @  sè   d dl mZ d dlZd dl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mZmZ d dlmZ d	d
dddddgZejejejejejejf ZejZG dd„ dƒZejZejZejej ef Z!dddddddœdd„Z"dS )é    )ÚannotationsN)Úx509)Úpkcs12)Úserialization)ÚPBES)ÚdsaÚecÚed448Úed25519Úrsa)ÚPrivateKeyTypesr   ÚPKCS12CertificateÚPKCS12KeyAndCertificatesÚPKCS12PrivateKeyTypesÚload_key_and_certificatesÚload_pkcs12Úserialize_key_and_certificatesc                   @  s€   e Zd Zddddœdd„Zeddœdd	„ƒZeddœd
d„ƒZeddœdd„ƒZdddœdd„Zddœdd„Z	ddœdd„Z
dS )r   zPrivateKeyTypes | NonezPKCS12Certificate | Nonezlist[PKCS12Certificate])ÚkeyÚcertÚadditional_certsc                 C  sx   |d k	r.t |tjtjtjtjt	j
fƒs.tdƒ‚|d k	rHt |tƒsHtdƒ‚tdd„ |D ƒƒsbtdƒ‚|| _|| _|| _d S )NúLKey must be RSA, DSA, EllipticCurve, ED25519, or ED448 private key, or None.z/cert must be a PKCS12Certificate object or Nonec                 s  s   | ]}t |tƒV  qd S ©N)Ú
isinstancer   )Ú.0Zadd_cert© r   úW/tmp/pip-unpacked-wheel-yjz0rwd7/cryptography/hazmat/primitives/serialization/pkcs12.pyÚ	<genexpr>C   s   ÿz4PKCS12KeyAndCertificates.__init__.<locals>.<genexpr>z@all values in additional_certs must be PKCS12Certificate objects)r   r   ÚRSAPrivateKeyr   ÚDSAPrivateKeyr   ÚEllipticCurvePrivateKeyr
   ÚEd25519PrivateKeyr	   ÚEd448PrivateKeyÚ	TypeErrorr   ÚallÚ_keyÚ_certÚ_additional_certs)Úselfr   r   r   r   r   r   Ú__init__-   s.    
ûþ
ÿþÿz!PKCS12KeyAndCertificates.__init__)Úreturnc                 C  s   | j S r   )r$   ©r'   r   r   r   r   O   s    zPKCS12KeyAndCertificates.keyc                 C  s   | j S r   )r%   r*   r   r   r   r   S   s    zPKCS12KeyAndCertificates.certc                 C  s   | j S r   )r&   r*   r   r   r   r   W   s    z)PKCS12KeyAndCertificates.additional_certsÚobjectÚbool)Úotherr)   c                 C  s2   t |tƒstS | j|jko0| j|jko0| j|jkS r   )r   r   ÚNotImplementedr   r   r   )r'   r-   r   r   r   Ú__eq__[   s    

ÿ
ýzPKCS12KeyAndCertificates.__eq__Úintc                 C  s   t | j| jt| jƒfƒS r   )Úhashr   r   Útupler   r*   r   r   r   Ú__hash__e   s    z!PKCS12KeyAndCertificates.__hash__Ústrc                 C  s   d}|  | j| j| j¡S )Nz@<PKCS12KeyAndCertificates(key={}, cert={}, additional_certs={})>)Úformatr   r   r   )r'   Úfmtr   r   r   Ú__repr__h   s    ÿz!PKCS12KeyAndCertificates.__repr__N)Ú__name__Ú
__module__Ú__qualname__r(   Úpropertyr   r   r   r/   r3   r7   r   r   r   r   r   ,   s   "
zbytes | NonezPKCS12PrivateKeyTypes | Nonezx509.Certificate | Nonez&typing.Iterable[_PKCS12CATypes] | Nonez(serialization.KeySerializationEncryptionÚbytes)Únamer   r   ÚcasÚencryption_algorithmr)   c                 C  sp   |d k	r.t |tjtjtjtjt	j
fƒs.tdƒ‚t |tjƒsBtdƒ‚|d kr^|d kr^|s^tdƒ‚t | ||||¡S )Nr   zFKey encryption algorithm must be a KeySerializationEncryption instancez1You must supply at least one of key, cert, or cas)r   r   r   r   r   r   r   r
   r    r	   r!   r"   r   ZKeySerializationEncryptionÚ
ValueErrorÚrust_pkcs12r   )r=   r   r   r>   r?   r   r   r   r   y   s8    
ûþ
ÿ ÿÿ    ÿ)#Ú
__future__r   ÚtypingZcryptographyr   Z"cryptography.hazmat.bindings._rustr   rA   Zcryptography.hazmat.primitivesr   Z-cryptography.hazmat.primitives._serializationr   Z)cryptography.hazmat.primitives.asymmetricr   r   r	   r
   r   Z/cryptography.hazmat.primitives.asymmetric.typesr   Ú__all__ÚUnionr   r   r   r    r!   r   r   r   r   r   ZCertificateZ_PKCS12CATypesr   r   r   r   r   Ú<module>   sB   ù
üÿ	Cÿÿ