U
    ʹh                     @  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 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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Z$dddddddddZ%dS )    )annotationsN)Iterable)x509)pkcs12)serialization)PBES)dsaeced448ed25519rsa)PrivateKeyTypesr   PKCS12CertificatePKCS12KeyAndCertificatesPKCS12PrivateKeyTypesload_key_and_certificatesload_pkcs12serialize_java_truststore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 )NLKey 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   Y./venv/lib/python3.8/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py	<genexpr>E   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   Q   s    zPKCS12KeyAndCertificates.keyc                 C  s   | j S r   )r'   r,   r   r   r   r   U   s    zPKCS12KeyAndCertificates.certc                 C  s   | j S r   )r(   r,   r   r   r   r   Y   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__g   s    z!PKCS12KeyAndCertificates.__hash__strc                 C  s   d}| | j| j| jS )Nz@<PKCS12KeyAndCertificates(key={}, cert={}, additional_certs={})>)formatr   r   r   )r)   Zfmtr   r   r   __repr__j   s    z!PKCS12KeyAndCertificates.__repr__N)__name__
__module____qualname__r*   propertyr   r   r   r1   r5   r8   r   r   r   r   r   .   s   "
zIterable[PKCS12Certificate]z(serialization.KeySerializationEncryptionbytes)certsencryption_algorithmr+   c                 C  s,   | st dt|tjs tdt| |S )Nz!You must supply at least one certFKey encryption algorithm must be a KeySerializationEncryption instance)
ValueErrorr   r   KeySerializationEncryptionr$   rust_pkcs12r   )r>   r?   r   r   r   r   {   s     zbytes | NonezPKCS12PrivateKeyTypes | Nonezx509.Certificate | NonezIterable[_PKCS12CATypes] | None)namer   r   casr?   r+   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   r@   z1You must supply at least one of key, cert, or cas)r   r   r   r   r    r	   r!   r   r"   r
   r#   r$   r   rB   rA   rC   r   )rD   r   r   rE   r?   r   r   r   r      s8    

     )&Z
__future__r   typingZcollections.abcr   Zcryptographyr   Z"cryptography.hazmat.bindings._rustr   rC   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__ZUnionr   r    r!   r"   r#   r   r   r   r   r   ZCertificateZ_PKCS12CATypesr   r   r   r   r   r   <module>   sH   	C