
    +ho                       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
mZmZmZmZ d dlmZ g dZej$                  ej&                  e
j(                  ej*                  ej,                  ej.                  f   Z G d	 d
      Z G d d      Z	 d	 	 	 	 	 	 	 ddZ	 d	 	 	 	 	 	 	 ddZej$                  ej:                  ef   Z	 	 	 	 	 	 	 	 	 	 	 	 ddZy)    )annotationsN)x509)serialization)PBES)dsaeced448ed25519rsa)PrivateKeyTypes)r   PKCS12PrivateKeyTypesPKCS12CertificatePKCS12KeyAndCertificatesload_key_and_certificatesload_pkcs12serialize_key_and_certificatesc                  X    e Zd Z	 	 	 	 ddZed	d       Zed
d       ZddZddZddZ	y)r   c                    t        |t        j                        st        d      |t        |t              st        d      || _        || _        y )Nz!Expecting x509.Certificate objectz#friendly_name must be bytes or None)
isinstancer   Certificate	TypeErrorbytes_cert_friendly_name)selfcertfriendly_names      f/var/www/html/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py__init__zPKCS12Certificate.__init__)   sJ    
 $ 0 01?@@$Zu-MABB
+    c                    | j                   S N)r   r   s    r   r   zPKCS12Certificate.friendly_name5   s    """r    c                    | j                   S r"   r   r#   s    r   certificatezPKCS12Certificate.certificate9       zzr    c                    t        |t              st        S | j                  |j                  k(  xr | j                  |j                  k(  S r"   )r   r   NotImplementedr&   r   r   others     r   __eq__zPKCS12Certificate.__eq__=   sG    %!23!!  1 11 :""e&9&99	
r    c                D    t        | j                  | j                  f      S r"   )hashr&   r   r#   s    r   __hash__zPKCS12Certificate.__hash__F   s    T%%t'9'9:;;r    c                N    dj                  | j                  | j                        S )Nz+<PKCS12Certificate({}, friendly_name={!r})>)formatr&   r   r#   s    r   __repr__zPKCS12Certificate.__repr__I   s&    <CCd00
 	
r    N)r   x509.Certificater   typing.Optional[bytes])returnr4   )r5   r3   r+   objectr5   boolr5   intr5   str)
__name__
__module____qualname__r   propertyr   r&   r,   r/   r2    r    r   r   r   (   sP    
,
, .
, # #  
<
r    r   c                  n    e Zd Z	 	 	 	 	 	 d	dZed
d       Zedd       Zedd       ZddZddZ	ddZ
y)r   c                j   |bt        |t        j                  t        j                  t
        j                  t        j                  t        j                  f      st        d      |t        |t              st        d      t        d |D              st        d      || _        || _        || _        y )NLKey must be RSA, DSA, EllipticCurve, ED25519, or ED448 private key, or None.z/cert must be a PKCS12Certificate object or Nonec              3  <   K   | ]  }t        |t                y wr"   )r   r   ).0add_certs     r   	<genexpr>z4PKCS12KeyAndCertificates.__init__.<locals>.<genexpr>f   s       
 x!23
s   z@all values in additional_certs must be PKCS12Certificate objects)r   r   RSAPrivateKeyr   DSAPrivateKeyr   EllipticCurvePrivateKeyr
   Ed25519PrivateKeyr	   Ed448PrivateKeyr   r   all_keyr   _additional_certs)r   keyr   additional_certss       r   r   z!PKCS12KeyAndCertificates.__init__P   s     ?:!!!!**))%%	$
 )  Jt5F$GMNN 
,
 
   	
!1r    c                    | j                   S r"   )rO   r#   s    r   rQ   zPKCS12KeyAndCertificates.keyr   s    yyr    c                    | j                   S r"   r%   r#   s    r   r   zPKCS12KeyAndCertificates.certv   r'   r    c                    | j                   S r"   )rP   r#   s    r   rR   z)PKCS12KeyAndCertificates.additional_certsz   s    %%%r    c                    t        |t              st        S | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r"   )r   r   r)   rQ   r   rR   r*   s     r   r,   zPKCS12KeyAndCertificates.__eq__~   sZ    %!9:!! HH		! @		UZZ'@%%)?)??	
r    c                l    t        | j                  | j                  t        | j                        f      S r"   )r.   rQ   r   tuplerR   r#   s    r   r/   z!PKCS12KeyAndCertificates.__hash__   s'    TXXtyy%0E0E*FGHHr    c                h    d}|j                  | j                  | j                  | j                        S )Nz@<PKCS12KeyAndCertificates(key={}, cert={}, additional_certs={})>)r1   rQ   r   rR   )r   fmts     r   r2   z!PKCS12KeyAndCertificates.__repr__   s-    N 	 zz$((DIIt/D/DEEr    N)rQ    typing.Optional[PrivateKeyTypes]r   "typing.Optional[PKCS12Certificate]rR   typing.List[PKCS12Certificate])r5   r[   )r5   r\   )r5   r]   r6   r9   r;   )r=   r>   r?   r   r@   rQ   r   rR   r,   r/   r2   rA   r    r   r   r   O   sq     2- 2 1 2 9	 2D     & &
IFr    r   c                2    ddl m} |j                  | |      S Nr   backend),cryptography.hazmat.backends.openssl.backendra   %load_key_and_certificates_from_pkcs12datapasswordra   ossls       r   r   r      s     M55dHEEr    c                2    ddl m} |j                  | |      S r_   )rb   ra   r   rd   s       r   r   r      s    
 MD(++r    c                   |bt        |t        j                  t        j                  t
        j                  t        j                  t        j                  f      st        d      |%t        |t        j                        st        d      |(t        |      }t        d |D              st        d      t        |t         j"                        st        d      |||st%        d      ddlm} |j+                  | ||||      S )	NrD   z"cert must be a certificate or Nonec              3  \   K   | ]$  }t        |t        j                  t        f       & y wr"   )r   r   r   r   )rF   vals     r   rH   z1serialize_key_and_certificates.<locals>.<genexpr>   s3      	
  $$%	
s   *,z&all values in cas must be certificateszFKey encryption algorithm must be a KeySerializationEncryption instancez1You must supply at least one of key, cert, or casr   r`   )r   r   rI   r   rJ   r   rK   r
   rL   r	   rM   r   r   r   listrN   r   KeySerializationEncryption
ValueErrorrb   ra   (serialize_key_and_certificates_to_pkcs12)namerQ   r   casencryption_algorithmra   s         r   r   r      s    z&&%%!!	
	  %
 	
 
41A1A B<==
3i 	
 	
 	
 DEEmFF 2
 	

 {t|CLMMD;;c42 r    r"   )re   r   rf   r4   ra   
typing.Anyr5   zptyping.Tuple[typing.Optional[PrivateKeyTypes], typing.Optional[x509.Certificate], typing.List[x509.Certificate]])re   r   rf   r4   ra   rs   r5   r   )rp   r4   rQ   z&typing.Optional[PKCS12PrivateKeyTypes]r   z!typing.Optional[x509.Certificate]rq   z0typing.Optional[typing.Iterable[_PKCS12CATypes]]rr   z(serialization.KeySerializationEncryptionr5   r   ) 
__future__r   typingcryptographyr   cryptography.hazmat.primitivesr   -cryptography.hazmat.primitives._serializationr   )cryptography.hazmat.primitives.asymmetricr   r   r	   r
   r   /cryptography.hazmat.primitives.asymmetric.typesr   __all__UnionrI   rJ   rK   rL   rM   r   r   r   r   r   r   _PKCS12CATypesr   rA   r    r   <module>r~      sJ  
 #   8 F  L 		 $
 $
N@F @FL F
F$F F	F" ,
,$, , 	, 5
 5	/5 ,5 
:	5
 C5 5r    