§
    hÝ[fŽ  ã                  óò  — d dl mZ d dlZd dlZd dlZd dlZd dlmZ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 d d	l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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*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; d dl<m=Z=m>Z>m?Z?m@Z@mAZA  ejB        dddg¦  «        ZC G d„ d¦  «        ZD G d„ d¦  «        ZE G d„ d¦  «        ZFd d„ZG eE¦   «         ZHdS )!é    )ÚannotationsN)ÚutilsÚx509)ÚUnsupportedAlgorithm)Úaead)Ú_CipherContext)Úopenssl)Úbinding)ÚhashesÚserialization)ÚAsymmetricPadding)Úec)r   )ÚMGF1ÚOAEPÚPSSÚPKCS1v15)ÚPrivateKeyTypes)ÚCipherAlgorithm)ÚAESÚAES128ÚAES256ÚARC4ÚSM4ÚCamelliaÚChaCha20Ú	TripleDESÚ_BlowfishInternalÚ_CAST5InternalÚ_IDEAInternalÚ_SEEDInternal)	ÚCBCÚCFBÚCFB8ÚCTRÚECBÚGCMÚOFBÚXTSÚMode)ÚPBESÚPKCS12CertificateÚPKCS12KeyAndCertificatesÚPKCS12PrivateKeyTypesÚ_PKCS12CATypesÚ
_MemoryBIOÚbioÚchar_ptrc                  ó   — e Zd ZdS )Ú_RC2N)Ú__name__Ú
__module__Ú__qualname__© ó    ú`/var/www/piapp/venv/lib/python3.11/site-packages/cryptography/hazmat/backends/openssl/backend.pyr3   r3   G   s   € € € € € Ø€Dr8   r3   c                  óÂ  — e Zd ZU dZdZh d£Zded<   efZe	j
        e	j        e	j        e	j        e	j        e	j        e	j        e	j        e	j        e	j        e	j        e	j        fZej        ej        ej        ej        fZdZdZddz  ZdZ de z  Z!dkd„Z"dld„Z#	 dmdnd„Z$dkd„Z%dld„Z&dod„Z'dpd„Z(dpd„Z)dqd„Z*dqd„Z+drd„Z,dqd„Z-dsd$„Z.dkd%„Z/dkd&„Z0dtd(„Z1dtd)„Z2dqd*„Z3dud,„Z4dvd/„Z5dwd3„Z6d4„ Z7dxd5„Z8dqd6„Z9dyd9„Z:dyd:„Z;drd;„Z<dqd<„Z=drd=„Z>dzdA„Z?d{dC„Z@d|dF„ZAd}dH„ZBd~dK„ZCddN„ZDd€dP„ZEdrdQ„ZFdrdR„ZGdrdS„ZHdrdT„ZIdrdU„ZJdrdV„ZKdrdW„ZLd�dY„ZMeNjO        dZ„ ¦   «         ZPd‚d^„ZQdƒd`„ZRd„dh„ZSdrdi„ZTdrdj„ZUdS )…ÚBackendz)
    OpenSSL API binding interfaces.
    r	   >   ó   aes-128-ccmó   aes-128-gcmó   aes-192-ccmó   aes-192-gcmó   aes-256-ccmó   aes-256-gcmztyping.ClassVar[set[bytes]]Ú
_fips_aeadi   i  é   ÚreturnÚNonec                óà   — t          j        ¦   «         | _        | j        j        | _        | j        j        | _        t          j        ¦   «         | _	        i | _
        |                      ¦   «          d S ©N)r
   ÚBindingÚ_bindingÚffiÚ_ffiÚlibÚ_libÚrust_opensslÚis_fips_enabledÚ_fips_enabledÚ_cipher_registryÚ_register_default_ciphers©Úselfs    r9   Ú__init__zBackend.__init__}   sa   € ÝœÑ)Ô)ˆŒØ”MÔ%ˆŒ	Ø”MÔ%ˆŒ	Ý)Ô9Ñ;Ô;ˆÔð
 ð 	Ôð 	×&Ò&Ñ(Ô(Ð(Ð(Ð(r8   Ústrc                ór   — d                      |                      ¦   «         | j        t          j        ¦  «        S )Nz3<OpenSSLBackend(version: {}, FIPS: {}, Legacy: {})>)ÚformatÚopenssl_version_textrP   rN   Ú_legacy_provider_loadedrS   s    r9   Ú__repr__zBackend.__repr__‰   s5   € ØD×KÒKØ×%Ò%Ñ'Ô'ØÔÝÔ0ñ
ô 
ð 	
r8   NÚokÚboolÚerrorsú&list[rust_openssl.OpenSSLError] | Nonec                ó.   — t          j        ||¬¦  «        S )N)r^   )r
   Ú_openssl_assert)rT   r\   r^   s      r9   Úopenssl_assertzBackend.openssl_assert�   s   € õ
 Ô& r°&Ð9Ñ9Ô9Ð9r8   c                ó’   — | j                              ¦   «          t          j        ¦   «         sJ ‚t          j        ¦   «         | _        d S rG   )rI   Ú_enable_fipsrN   rO   rP   rS   s    r9   rd   zBackend._enable_fips—   sD   € ð 	Œ×"Ò"Ñ$Ô$Ð$ÝÔ+Ñ-Ô-Ð-Ð-Ð-Ý)Ô9Ñ;Ô;ˆÔÐÐr8   c                ó    — | j                              | j                             | j        j        ¦  «        ¦  «                             d¦  «        S )zÀ
        Friendly string name of the loaded OpenSSL library. This is not
        necessarily the same version as it was compiled against.

        Example: OpenSSL 1.1.1d  10 Sep 2019
        Úascii)rK   ÚstringrM   ÚOpenSSL_versionÚOPENSSL_VERSIONÚdecoderS   s    r9   rY   zBackend.openssl_version_textž   sA   € ð Œy×ÒØŒI×%Ò% d¤iÔ&?Ñ@Ô@ñ
ô 
ç
Š&�‰/Œ/ð	r8   Úintc                ó4   — | j                              ¦   «         S rG   )rM   ÚOpenSSL_version_numrS   s    r9   Úopenssl_version_numberzBackend.openssl_version_number©   s   € ØŒy×,Ò,Ñ.Ô.Ð.r8   Ú	algorithmúhashes.HashAlgorithmc                óÎ   — |j         dv r'|j         › |j        dz  › �                     d¦  «        }n|j                              d¦  «        }| j                             |¦  «        }|S )N)Úblake2bÚblake2sé   rf   )ÚnameÚdigest_sizeÚencoderM   ÚEVP_get_digestbyname)rT   ro   ÚalgÚevp_mds       r9   Ú_evp_md_from_algorithmzBackend._evp_md_from_algorithm¬   sp   € ØŒ>Ð3Ð3Ð3Ø”^Ð@ YÔ%:¸QÑ%>Ð@Ð@×GÒGØñô ˆCˆCð ”.×'Ò'¨Ñ0Ô0ˆCà”×/Ò/°Ñ4Ô4ˆØˆr8   c                óv   — |                       |¦  «        }|                      || j        j        k    ¦  «         |S rG   )r{   rb   rK   ÚNULL©rT   ro   rz   s      r9   Ú_evp_md_non_null_from_algorithmz'Backend._evp_md_non_null_from_algorithm·   s7   € Ø×,Ò,¨YÑ7Ô7ˆØ×Ò˜F d¤i¤nÒ4Ñ5Ô5Ð5Øˆr8   c                óˆ   — | j         rt          || j        ¦  «        sdS |                      |¦  «        }|| j        j        k    S ©NF)rP   Ú
isinstanceÚ_fips_hashesr{   rK   r}   r~   s      r9   Úhash_supportedzBackend.hash_supported¼   sH   € ØÔð 	¥j°¸DÔ<MÑ&NÔ&Nð 	Ø�5à×,Ò,¨YÑ7Ô7ˆØ˜œœÒ'Ð'r8   c                ór   — | j         rt          |t          j        ¦  «        rdS |                      |¦  «        S r�   ©rP   r‚   r   ÚSHA1r„   ©rT   ro   s     r9   Úsignature_hash_supportedz Backend.signature_hash_supportedÃ   s;   € ð
 Ôð 	¥*¨Y½¼Ñ"DÔ"Dð 	Ø�5Ø×"Ò" 9Ñ-Ô-Ð-r8   c                ó4   — | j         rdS | j        j        dk    S )NFrC   )rP   rM   ÚCryptography_HAS_SCRYPTrS   s    r9   Úscrypt_supportedzBackend.scrypt_supportedÌ   s"   € ØÔð 	:Ø�5à”9Ô4¸Ò9Ð9r8   c                ór   — | j         rt          |t          j        ¦  «        rdS |                      |¦  «        S )NTr†   rˆ   s     r9   Úhmac_supportedzBackend.hmac_supportedÒ   s9   € àÔð 	¥*¨Y½¼Ñ"DÔ"Dð 	Ø�4à×"Ò" 9Ñ-Ô-Ð-r8   Úcipherr   Úmoder)   c                óð   — | j         rt          || j        ¦  «        sdS 	 | j        t	          |¦  «        t	          |¦  «        f         }n# t
          $ r Y dS w xY w || ||¦  «        }| j        j        |k    S r�   )rP   r‚   Ú_fips_ciphersrQ   ÚtypeÚKeyErrorrK   r}   )rT   r�   r�   ÚadapterÚ
evp_ciphers        r9   Úcipher_supportedzBackend.cipher_supportedÙ   s’   € ØÔð 	õ ˜f dÔ&8Ñ9Ô9ð Ø�uð	ØÔ+­D°©L¬L½$¸t¹*¼*Ð,DÔEˆGˆGøÝð 	ð 	ð 	Ø�5�5ð	øøøà�W˜T 6¨4Ñ0Ô0ˆ
ØŒyŒ~ Ò+Ð+s    )A
 Á

AÁAc                ó`   — ||f| j         v rt          d|› d|› d�¦  «        ‚|| j         ||f<   d S )NzDuplicate registration for: ú ú.)rQ   Ú
ValueError)rT   Ú
cipher_clsÚmode_clsr•   s       r9   Úregister_cipher_adapterzBackend.register_cipher_adapterç   sW   € Ø˜Ð! TÔ%:Ð:Ð:ÝØG¨zÐGÐG¸HÐGÐGÐGñô ð ð 7>ˆÔ˜j¨(Ð2Ñ3Ð3Ð3r8   c           	     ó¾  — t           t          t          fD ]U}t          t          t
          t          t          t          t          fD ]&}|  
                    ||t          d¦  «        ¦  «         Œ'ŒVt          t          t
          t          t          fD ]+}|  
                    t          |t          d¦  «        ¦  «         Œ,t          t          t          t          fD ]+}|  
                    t          |t          d¦  «        ¦  «         Œ,|  
                    t          t
          t          d¦  «        ¦  «         |  
                    t          t          d ¦  «        t          | j        j        rdnd¦  «        ¦  «         |  
                    t           t$          t&          ¦  «         t
          t          t          t          t          t          fD ]+}|  
                    t(          |t          d¦  «        ¦  «         Œ,t*          j        s| j        j        �s]t          t          t          t
          fD ]+}|  
                    t0          |t          d¦  «        ¦  «         Œ,t          t          t          t
          fD ]+}|  
                    t2          |t          d¦  «        ¦  «         Œ,t5          j        t8          t:          gt          t          t          t
          g¦  «        D ])\  }}|  
                    ||t          d	¦  «        ¦  «         Œ*|  
                    t<          t          d ¦  «        t          d
¦  «        ¦  «         |  
                    t>          t          d ¦  «        t          d¦  «        ¦  «         d S d S )Nz+{cipher.name}-{cipher.key_size}-{mode.name}zdes-ede3-{mode.name}zdes-ede3ÚchachaÚchacha20zsm4-{mode.name}zbf-{mode.name}zseed-{mode.name}z{cipher.name}-{mode.name}Úrc4Úrc2) r   r   r   r!   r$   r%   r'   r"   r#   r&   rž   ÚGetCipherByNamer   r   r   r“   rM   ÚCRYPTOGRAPHY_IS_LIBRESSLr(   Ú_get_xts_cipherr   rN   rZ   Ú#CRYPTOGRAPHY_OPENSSL_300_OR_GREATERr   r    Ú	itertoolsÚproductr   r   r   r3   )rT   rœ   r�   s      r9   rR   z!Backend._register_default_ciphersî   sV  € Ý¥­Ð/ð 	ð 	ˆJÝ ¥#¥s­Cµµd½CÐ@ð ð �Ø×,Ò,ØØÝ#ØEñô ñô ð ð ðõ �c¥3­­SÐ1ð 	ð 	ˆHØ×(Ò(ÝØÝÐ MÑNÔNñô ð ð õ
 �c¥4­Ð-ð 	ð 	ˆHØ×(Ò(Ý˜8¥_Ð5KÑ%LÔ%Lñô ð ð ð 	×$Ò$Ý•s�O¨JÑ7Ô7ñ	
ô 	
ð 	
ð
 	×$Ò$ÝÝ�‰JŒJÝØ œIÔ>ÐN��ÀJñô ñ	
ô 	
ð 	
ð 	×$Ò$¥S­#­Ñ?Ô?Ð?Ý�c¥3­­Sµ#Ð6ð 	ð 	ˆHØ×(Ò(Ý�X�Ð/@ÑAÔAñô ð ð õ Ô0ð	à”9Ô@ñ	õ !¥#¥s­CÐ0ð ð �Ø×,Ò,Ý%ØÝ#Ð$4Ñ5Ô5ñô ð ð õ
 !¥#¥s­CÐ0ð ð �Ø×,Ò,Ý!ØÝ#Ð$6Ñ7Ô7ñô ð ð õ
 )2Ô(9Ý¥Ð/Ý•c�3¥Ð$ñ)ô )ð ð Ñ$�
˜Hð ×,Ò,ØØÝ#Ð$?Ñ@Ô@ñô ð ð ð
 ×(Ò(Ý•d˜4‘j”j¥/°%Ñ"8Ô"8ñô ð ð ×(Ò(Ý•d˜4‘j”j¥/°%Ñ"8Ô"8ñô ð ð ð ð;	ð 	r8   r   c                ó:   — t          | ||t           j        ¦  «        S rG   )r   Ú_ENCRYPT©rT   r�   r�   s      r9   Úcreate_symmetric_encryption_ctxz'Backend.create_symmetric_encryption_ctx8  ó   € õ ˜d F¨Dµ.Ô2IÑJÔJÐJr8   c                ó:   — t          | ||t           j        ¦  «        S rG   )r   Ú_DECRYPTr¬   s      r9   Úcreate_symmetric_decryption_ctxz'Backend.create_symmetric_decryption_ctx=  r®   r8   c                ó,   — |                       |¦  «        S rG   )rŽ   rˆ   s     r9   Úpbkdf2_hmac_supportedzBackend.pbkdf2_hmac_supportedB  s   € Ø×"Ò" 9Ñ-Ô-Ð-r8   úlist[rust_openssl.OpenSSLError]c                ó(   — t          j        ¦   «         S rG   )rN   Úcapture_error_stackrS   s    r9   Ú_consume_errorszBackend._consume_errorsE  s   € ÝÔ/Ñ1Ô1Ð1r8   Úpublic_exponentÚkey_sizec                ó,   — |dk    o|dz  dk    o|dk    S )Né   rC   r   i   r7   )rT   r¸   r¹   s      r9   Ú!generate_rsa_parameters_supportedz)Backend.generate_rsa_parameters_supportedH  s/   € ð ˜qÒ ð  Ø !Ñ# qÒ(ð à˜C’ð	
r8   ÚdataÚbytesr/   c                ó2  — | j                              |¦  «        }| j                             |t	          |¦  «        ¦  «        }|                      || j         j        k    ¦  «         t          | j                              || j        j	        ¦  «        |¦  «        S )z®
        Return a _MemoryBIO namedtuple of (BIO, char*).

        The char* is the storage for the BIO and it must stay alive until the
        BIO is finished with.
        )
rK   Úfrom_bufferrM   ÚBIO_new_mem_bufÚlenrb   r}   r/   ÚgcÚBIO_free)rT   r½   Údata_ptrr0   s       r9   Ú_bytes_to_biozBackend._bytes_to_bioQ  sx   € ð ”9×(Ò(¨Ñ.Ô.ˆØŒi×'Ò'¨µ#°d±)´)Ñ<Ô<ˆØ×Ò˜C 4¤9¤>Ò1Ñ2Ô2Ð2å˜$œ)Ÿ,š, s¨D¬IÔ,>Ñ?Ô?ÀÑJÔJÐJr8   c                óB  — | j                              ¦   «         }|                      || j        j        k    ¦  «         | j                              |¦  «        }|                      || j        j        k    ¦  «         | j                             || j         j        ¦  «        }|S )z.
        Creates an empty memory BIO.
        )rM   Ú	BIO_s_memrb   rK   r}   ÚBIO_newrÃ   rÄ   )rT   Ú
bio_methodr0   s      r9   Ú_create_mem_bio_gczBackend._create_mem_bio_gc^  s…   € ð ”Y×(Ò(Ñ*Ô*ˆ
Ø×Ò˜J¨$¬)¬.Ò8Ñ9Ô9Ð9ØŒi×Ò 
Ñ+Ô+ˆØ×Ò˜C 4¤9¤>Ò1Ñ2Ô2Ð2ØŒi�lŠl˜3 ¤	Ô 2Ñ3Ô3ˆØˆ
r8   c                óF  — | j                              d¦  «        }| j                             ||¦  «        }|                      |dk    ¦  «         |                      |d         | j         j        k    ¦  «         | j                              |d         |¦  «        dd…         }|S )zE
        Reads a memory BIO. This only works on memory BIOs.
        zchar **r   N)rK   ÚnewrM   ÚBIO_get_mem_datarb   r}   Úbuffer)rT   r0   ÚbufÚbuf_lenÚbio_datas        r9   Ú_read_mem_biozBackend._read_mem_bioi  s�   € ð Œi�mŠm˜IÑ&Ô&ˆØ”)×,Ò,¨S°#Ñ6Ô6ˆØ×Ò˜G ašKÑ(Ô(Ð(Ø×Ò˜C œF d¤i¤nÒ4Ñ5Ô5Ð5Ø”9×#Ò# C¨¤F¨GÑ4Ô4°Q°Q°QÔ7ˆØˆr8   c                óÖ   — | j         rt          |t          j        ¦  «        rdS t          |t          j        t          j        t          j        t          j        t          j        f¦  «        S r�   )rP   r‚   r   r‡   ÚSHA224ÚSHA256ÚSHA384ÚSHA512rˆ   s     r9   Ú_oaep_hash_supportedzBackend._oaep_hash_supportedt  sX   € ØÔð 	¥*¨Y½¼Ñ"DÔ"Dð 	Ø�5åØå”Ý”Ý”Ý”Ý”ðñ	
ô 	
ð 		
r8   Úpaddingr   c                óú  — t          |t          ¦  «        rdS t          |t          ¦  «        rft          |j        t          ¦  «        rL| j        r&t          |j        j        t          j        ¦  «        rdS |  	                    |j        j        ¦  «        S t          |t          ¦  «        rSt          |j        t          ¦  «        r9|                      |j        j        ¦  «        o|                      |j        ¦  «        S dS )NTF)r‚   r   r   Ú_mgfr   rP   Ú
_algorithmr   r‡   r„   r   rÙ   ©rT   rÚ   s     r9   Úrsa_padding_supportedzBackend.rsa_padding_supportedƒ  sñ   € Ý�g�xÑ(Ô(ð 	Ø�4Ý˜¥Ñ%Ô%ð 	­*°W´\Å4Ñ*HÔ*Hð 	ð Ô!ð D¥jØ”Ô'­¬ñ'ô 'ð Dð �tà×*Ò*¨7¬<Ô+BÑCÔCÐCÝ˜¥Ñ&Ô&ð 	­:°g´lÅDÑ+IÔ+Ið 	Ø×,Ò,Ø”Ô'ñô ð @à×+Ò+¨GÔ,>Ñ?Ô?ð@ð �5r8   c                óh   — | j         rt          |t          ¦  «        rdS |                      |¦  «        S r�   )rP   r‚   r   rß   rÞ   s     r9   Úrsa_encryption_supportedz Backend.rsa_encryption_supported–  s7   € ØÔð 	7¥*¨WµhÑ"?Ô"?ð 	7Ø�5à×-Ò-¨gÑ6Ô6Ð6r8   c                ó,   — | j         j         o| j         S rG   )rM   ÚCRYPTOGRAPHY_IS_BORINGSSLrP   rS   s    r9   Údsa_supportedzBackend.dsa_supportedœ  s   € à”	Ô3Ð3ÐN¸DÔ<NÐ8Nð	
r8   c                óX   — |                       ¦   «         sdS |                      |¦  «        S r�   )rä   r‰   rˆ   s     r9   Údsa_hash_supportedzBackend.dsa_hash_supported¡  s/   € Ø×!Ò!Ñ#Ô#ð 	Ø�5Ø×,Ò,¨YÑ7Ô7Ð7r8   c                óX   — |                       |t          d|j        z  ¦  «        ¦  «        S )Nó    )r—   r!   Ú
block_sizerˆ   s     r9   Úcmac_algorithm_supportedz Backend.cmac_algorithm_supported¦  s/   € Ø×$Ò$Ø•s˜7 YÔ%9Ñ9Ñ:Ô:ñ
ô 
ð 	
r8   Úcertúx509.Certificateú
typing.Anyc                ó\  — |                      t          j        j        ¦  «        }|                      |¦  «        }| j                             |j        | j        j	        ¦  «        }|  
                    || j        j	        k    ¦  «         | j                             || j        j        ¦  «        }|S rG   )Úpublic_bytesr   ÚEncodingÚDERrÆ   rM   Úd2i_X509_bior0   rK   r}   rb   rÃ   Ú	X509_free)rT   rë   r½   Úmem_bior   s        r9   Ú
_cert2osslzBackend._cert2ossl«  s‡   € Ø× Ò ¥Ô!7Ô!;Ñ<Ô<ˆØ×$Ò$ TÑ*Ô*ˆØŒy×%Ò% g¤k°4´9´>ÑBÔBˆØ×Ò˜D D¤I¤NÒ2Ñ3Ô3Ð3ØŒy�|Š|˜D $¤)Ô"5Ñ6Ô6ˆØˆr8   Úx509_ptrc                óà   — |                       ¦   «         }| j                             ||¦  «        }|                      |dk    ¦  «         t	          j        |                      |¦  «        ¦  «        S ©NrC   )rË   rM   Úi2d_X509_biorb   r   Úload_der_x509_certificaterÓ   )rT   rö   r0   Úress       r9   Ú
_ossl2certzBackend._ossl2cert³  sa   € Ø×%Ò%Ñ'Ô'ˆØŒi×$Ò$ S¨(Ñ3Ô3ˆØ×Ò˜C 1šHÑ%Ô%Ð%ÝÔ-¨d×.@Ò.@ÀÑ.EÔ.EÑFÔFÐFr8   Úkeyr-   c                óœ  — |                      t          j        j        t          j        j        t          j        ¦   «         ¦  «        }|                      |¦  «        }| j         	                    |j
        | j        j        ¦  «        }|                      || j        j        k    ¦  «         | j                             || j        j        ¦  «        S rG   )Úprivate_bytesr   rð   rñ   ÚPrivateFormatÚPKCS8ÚNoEncryptionrÆ   rM   Úd2i_PrivateKey_bior0   rK   r}   rb   rÃ   ÚEVP_PKEY_free)rT   rý   r½   rô   Úevp_pkeys        r9   Ú	_key2osslzBackend._key2ossl¹  s§   € Ø× Ò ÝÔ"Ô&ÝÔ'Ô-ÝÔ&Ñ(Ô(ñ
ô 
ˆð
 ×$Ò$ TÑ*Ô*ˆà”9×/Ò/ØŒKØŒIŒNñ
ô 
ˆð 	×Ò˜H¨¬	¬Ò6Ñ7Ô7Ð7ØŒy�|Š|˜H d¤iÔ&=Ñ>Ô>Ð>r8   útyping.NoReturnc                óð  ‡ — |st          d¦  «        ‚|d                              ‰ j        j        ‰ j        j        ¦  «        sl|d                              ‰ j        j        ‰ j        j        ¦  «        s<‰ j        j        r?|d                              ‰ j        j        ‰ j        j	        ¦  «        rt          d¦  «        ‚t          ˆ fd„|D ¦   «         ¦  «        rt          d¦  «        ‚t          d|¦  «        ‚)Nz|Could not deserialize key data. The data may be in an incorrect format or it may be encrypted with an unsupported algorithm.r   z Bad decrypt. Incorrect password?c              3  ól   •K  — | ].}|                      ‰j        j        ‰j        j        ¦  «        V — Œ/d S rG   )Ú_lib_reason_matchrM   ÚERR_LIB_EVPÚ'EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM)Ú.0ÚerrorrT   s     €r9   ú	<genexpr>z4Backend._handle_key_loading_error.<locals>.<genexpr>ä  sY   øè è € ð 
ð 
ð
 ð	 ×#Ò#Ø”	Ô%Ø”	ÔAñô ð
ð 
ð 
ð 
ð 
ð 
r8   z!Unsupported public key algorithm.zÊCould not deserialize key data. The data may be in an incorrect format, it may be encrypted with an unsupported algorithm, or it may be an unsupported key type (e.g. EC curves with explicit parameters).)r›   r
  rM   r  ÚEVP_R_BAD_DECRYPTÚERR_LIB_PKCS12Ú!PKCS12_R_PKCS12_CIPHERFINAL_ERRORÚCryptography_HAS_PROVIDERSÚERR_LIB_PROVÚPROV_R_BAD_DECRYPTÚany)rT   r^   s   ` r9   Ú_handle_key_loading_errorz!Backend._handle_key_loading_errorÈ  s6  ø€ ð ð )	Ýðñô ð ð �1ŒI×'Ò'Ø”	Ô% t¤yÔ'Bñô ð"	ð �aŒy×*Ò*Ø”	Ô(Ø”	Ô;ñô ð	"	ð ”	Ô4ð"	ð ˜1”I×/Ò/Ø”IÔ*Ø”IÔ0ñô ð"	õ  Ð?Ñ@Ô@Ð@åð 
ð 
ð 
ð 
ð
  ð
ñ 
ô 
ñ 
ô 
ð 	õ Ð@ÑAÔAÐAõ ð4ð ñô ð r8   Úcurveúec.EllipticCurvec                ó|   — | j         rt          || j        ¦  «        sdS t          j                             |¦  «        S r�   )rP   r‚   Ú_fips_ecdh_curvesrN   r   Úcurve_supported)rT   r  s     r9   Úelliptic_curve_supportedz Backend.elliptic_curve_supportedö  sC   € ØÔð 	¥jØ�4Ô)ñ'
ô '
ð 	ð �5åŒ×.Ò.¨uÑ5Ô5Ð5r8   Úsignature_algorithmú"ec.EllipticCurveSignatureAlgorithmc                óÖ   — t          |t          j        ¦  «        sdS |                      |¦  «        o8t          |j        t
          j        ¦  «        p|                      |j        ¦  «        S r�   )r‚   r   ÚECDSAr  ro   Ú
asym_utilsÚ	Prehashedr„   )rT   r  r  s      r9   Ú,elliptic_curve_signature_algorithm_supportedz4Backend.elliptic_curve_signature_algorithm_supportedþ  sh   € õ Ð-­r¬xÑ8Ô8ð 	Ø�5à×,Ò,¨UÑ3Ô3ð 
ÝÐ*Ô4µjÔ6JÑKÔKð BØ×"Ò"Ð#6Ô#@ÑAÔAð	
r8   úec.ECDHc                ó`   — |                       |¦  «        ot          |t          j        ¦  «        S rG   )r  r‚   r   ÚECDH)rT   ro   r  s      r9   Ú+elliptic_curve_exchange_algorithm_supportedz3Backend.elliptic_curve_exchange_algorithm_supported  s2   € ð ×,Ò,¨UÑ3Ô3ð 
½
Ø•r”wñ9
ô 9
ð 	
r8   c                ó   — | j         j         S rG   ©rM   rã   rS   s    r9   Údh_supportedzBackend.dh_supported  ó   € Ø”9Ô6Ð6Ð6r8   c                ó"   — | j         j        dk    S rø   )rM   ÚCryptography_HAS_EVP_PKEY_DHXrS   s    r9   Údh_x942_serialization_supportedz'Backend.dh_x942_serialization_supported  s   € ØŒyÔ6¸!Ò;Ð;r8   c                ó   — | j         rdS dS ©NFT©rP   rS   s    r9   Úx25519_supportedzBackend.x25519_supported  ó   € ØÔð 	Ø�5Øˆtr8   c                óH   — | j         rdS | j        j         o| j        j         S r�   ©rP   rM   r¥   rã   rS   s    r9   Úx448_supportedzBackend.x448_supported  ó2   € ØÔð 	Ø�5à”	Ô2Ð2ð 8Ø”IÔ7Ð7ð	
r8   c                ó   — | j         rdS dS r1  r2  rS   s    r9   Úed25519_supportedzBackend.ed25519_supported&  r4  r8   c                óH   — | j         rdS | j        j         o| j        j         S r�   r6  rS   s    r9   Úed448_supportedzBackend.ed448_supported+  r8  r8   c                ó,   — t          j        | |¦  «        S rG   )r   Ú_aead_cipher_supported)rT   r�   s     r9   Úaead_cipher_supportedzBackend.aead_cipher_supported3  s   € ÝÔ*¨4°Ñ8Ô8Ð8r8   Úlengthc                ó4   — t          |¦  «        D ]}d||<   Œd S )Nr   )Úrange)rT   r½   r@  Úis       r9   Ú
_zero_datazBackend._zero_data6  s.   € õ �v‘”ð 	ð 	ˆAØˆD�‰GˆGð	ð 	r8   c              #  ó�  K  — |€| j         j        V — dS t          |¦  «        }| j                              d|dz   ¦  «        }| j                              |||¦  «         	 |V — |                      | j                              d|¦  «        |¦  «         dS # |                      | j                              d|¦  «        |¦  «         w xY w)aâ  
        This method takes bytes, which can be a bytestring or a mutable
        buffer like a bytearray, and yields a null-terminated version of that
        data. This is required because PKCS12_parse doesn't take a length with
        its password char * and ffi.from_buffer doesn't provide null
        termination. So, to support zeroing the data via bytearray we
        need to build this ridiculous construct that copies the memory, but
        zeroes it after use.
        Nzchar[]rC   z	uint8_t *)rK   r}   rÂ   rÍ   ÚmemmoverD  Úcast)rT   r½   Údata_lenrÐ   s       r9   Ú_zeroed_null_terminated_bufz#Backend._zeroed_null_terminated_buf=  sÆ   è è € ð ˆ<Ø”)”.Ð Ð Ð Ð Ð å˜4‘y”yˆHØ”)—-’- ¨(°Q©,Ñ7Ô7ˆCØŒI×Ò˜c 4¨Ñ2Ô2Ð2ðLØ�	�	�	ð —’ ¤	§¢¨{¸CÑ @Ô @À(ÑKÔKÐKÐKÐKø�—’ ¤	§¢¨{¸CÑ @Ô @À(ÑKÔKÐKÐKøøøs   ÁB Â1CÚpasswordúbytes | NoneúNtuple[PrivateKeyTypes | None, x509.Certificate | None, list[x509.Certificate]]c                ó†   — |                       ||¦  «        }|j        |j        r|j        j        nd d„ |j        D ¦   «         fS )Nc                ó   — g | ]	}|j         ‘Œ
S r7   )Úcertificate)r  rë   s     r9   ú
<listcomp>zABackend.load_key_and_certificates_from_pkcs12.<locals>.<listcomp>_  s   € ÐBÐBÐB $ˆTÔÐBÐBÐBr8   )Úload_pkcs12rý   rë   rO  Úadditional_certs)rT   r½   rJ  Úpkcs12s       r9   Ú%load_key_and_certificates_from_pkcs12z-Backend.load_key_and_certificates_from_pkcs12T  sP   € ð ×!Ò! $¨Ñ1Ô1ˆàŒJØ'-¤{Ð<ˆFŒKÔ#Ð#¸ØBÐB¨&Ô*AÐBÑBÔBð
ð 	
r8   r,   c                ó¼  — |�t          j        d|¦  «         |                      |¦  «        }| j                             |j        | j        j        ¦  «        }|| j        j        k    r#|                      ¦   «          t          d¦  «        ‚| j         
                    || j        j        ¦  «        }| j                             d¦  «        }| j                             d¦  «        }| j                             d¦  «        }|                      |¦  «        5 }| j                             |||||¦  «        }	d d d ¦  «         n# 1 swxY w Y   |	dk    r#|                      ¦   «          t          d¦  «        ‚d }
d }g }|d         | j        j        k    rr| j         
                    |d         | j        j        ¦  «        }t           j                             t'          | j                             d|¦  «        ¦  «        d	¬
¦  «        }|d         | j        j        k    r¡| j         
                    |d         | j        j        ¦  «        }|                      |¦  «        }d }| j                             || j        j        ¦  «        }|| j        j        k    r| j                             |¦  «        }t3          ||¦  «        }
|d         | j        j        k    �r€| j         
                    |d         | j        j        ¦  «        }| j                             |d         ¦  «        }| j        j        s| j        j        rt=          |¦  «        }nt?          t=          |¦  «        ¦  «        }|D ]î}| j                              ||¦  «        }|  !                    || j        j        k    ¦  «         | j         
                    || j        j        ¦  «        }|                      |¦  «        }d }| j                             || j        j        ¦  «        }|| j        j        k    r| j                             |¦  «        }| "                    t3          ||¦  «        ¦  «         ŒïtG          ||
|¦  «        S )NrJ  z!Could not deserialize PKCS12 datazEVP_PKEY **zX509 **zCryptography_STACK_OF_X509 **r   zInvalid password or PKCS12 dataÚ	uintptr_tF)Úunsafe_skip_rsa_key_validation)$r   Ú_check_byteslikerÆ   rM   Úd2i_PKCS12_bior0   rK   r}   r·   r›   rÃ   ÚPKCS12_freerÍ   rI  ÚPKCS12_parser  rN   ÚkeysÚprivate_key_from_ptrrk   rG  ró   rü   ÚX509_alias_get0rg   r+   Úsk_X509_freeÚsk_X509_numr§   rã   rB  ÚreversedÚsk_X509_valuerb   Úappendr,   )rT   r½   rJ  r0   Úp12Úevp_pkey_ptrrö   Úsk_x509_ptrÚpassword_bufrû   rë   rý   Úadditional_certificatesr  r   Úcert_objru   Ú
maybe_nameÚsk_x509ÚnumÚindicesrC  Ú	addl_certÚ	addl_names                           r9   rQ  zBackend.load_pkcs12b  s  € ð ÐÝÔ" :¨xÑ8Ô8Ð8à× Ò  Ñ&Ô&ˆØŒi×&Ò& s¤w°´	´Ñ?Ô?ˆØ�$”)”.Ò Ð Ø× Ò Ñ"Ô"Ð"ÝÐ@ÑAÔAÐAàŒi�lŠl˜3 ¤	Ô 5Ñ6Ô6ˆØ”y—}’} ]Ñ3Ô3ˆØ”9—=’= Ñ+Ô+ˆØ”i—m’mÐ$CÑDÔDˆØ×-Ò-¨hÑ7Ô7ð 	¸<Ø”)×(Ò(Ø�\ <°¸;ñô ˆCð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð �!Š8ˆ8Ø× Ò Ñ"Ô"Ð"ÝÐ>Ñ?Ô?Ð?àˆØˆØ"$Ðà˜Œ?˜dœiœnÒ,Ð,Ø”y—|’| L°¤O°T´YÔ5LÑMÔMˆHõ Ô#×8Ò8Ý�D”I—N’N ;°Ñ9Ô9Ñ:Ô:Ø/4ð 9ñ ô ˆCð
 �AŒ;˜$œ)œ.Ò(Ð(Ø”9—<’< ¨¤¨T¬YÔ-@ÑAÔAˆDØ—’ tÑ,Ô,ˆHØˆDØœ×2Ò2°4¸¼¼ÑHÔHˆJØ˜TœYœ^Ò+Ð+Ø”y×'Ò'¨
Ñ3Ô3�Ý$ X¨tÑ4Ô4ˆDà�qŒ>˜TœYœ^Ò+Ñ+Ø”i—l’l ;¨q¤>°4´9Ô3IÑJÔJˆGØ”)×'Ò'¨°A¬Ñ7Ô7ˆCð ”	Ô=ð/à”9Ô6ð/õ   ™*œ*��å"¥5¨¡:¤:Ñ.Ô.�àð ð �Ø”y×.Ò.¨w¸Ñ:Ô:�Ø×#Ò# D¨D¬I¬NÒ$:Ñ;Ô;Ð;Ø”y—|’| D¨$¬)Ô*=Ñ>Ô>�Ø ŸOšO¨DÑ1Ô1�	Ø �	Ø!œY×6Ò6°t¸T¼Y¼^ÑLÔL�
Ø ¤¤Ò/Ð/Ø $¤	× 0Ò 0°Ñ <Ô <�IØ'×.Ò.Ý% i°Ñ;Ô;ñô ð ð õ (¨¨TÐ3JÑKÔKÐKs   ÄD=Ä=EÅEru   úPKCS12PrivateKeyTypes | Noneúx509.Certificate | NoneÚcasúlist[_PKCS12CATypes] | NoneÚencryption_algorithmú(serialization.KeySerializationEncryptionc                ó˜
  — d }|�t          j        d|¦  «         t          |t          j        ¦  «        rd}d}d}	d}
| j        j        }�n°t          |t          j        ¦  «        rV| j        j	        r| j        j
        }| j        j
        }n| j        j        }| j        j        }d}	d}
| j        j        }|j        }�n@t          |t          j        ¦  «        �r|j        t          j        j        u rþd}d}d}	d}
|j        }|j        }|t$          j        u r| j        j        }| j        j        }nF|t$          j        u r4| j        j	        st+          d¦  «        ‚| j        j
        }| j        j
        }n|�J ‚|j        �Y| j        j        st+          d¦  «        ‚|                      |j        ¦  «        }|                      || j        j        k    ¦  «         n| j        j        }|j        �|j        }	nt7          d¦  «        ‚|�t9          |¦  «        dk    r| j        j        }�nL| j                             ¦   «         }| j                             || j        j        ¦  «        }g }|D �]}t          |t@          ¦  «        r�|j!        }|  "                    |j#        ¦  «        }|€'| j         $                    || j        j        d¦  «        }n)| j         $                    ||t9          |¦  «        ¦  «        }|                      |dk    ¦  «         n|  "                    |¦  «        }| %                    |¦  «         | j         &                    ||¦  «        }tN                               |dk    ¦  «         �Œ
|  (                    |¦  «        5 }|  (                    |¦  «        5 }|r|  "                    |¦  «        n| j        j        }|�|  )                    |¦  «        n| j        j        }| j         *                    ||||||||	|
d¦
  «
        }|| j        j        k    r$|  +                    ¦   «         }t7          d	|¦  «        ‚	 d d d ¦  «         n# 1 swxY w Y   | j        j        r:|| j        j        k    r*| j         ,                    ||d| j        j        d|
|¦  «         d d d ¦  «         n# 1 swxY w Y   |                      || j        j        k    ¦  «         | j                             || j        j-        ¦  «        }|  .                    ¦   «         }| j         /                    ||¦  «        }|                      |dk    ¦  «         |  0                    |¦  «        S )
Nru   éÿÿÿÿr   i N  rC   z2PBESv2 is not supported by this version of OpenSSLzBSetting MAC algorithm is not supported by this version of OpenSSL.zUnsupported key encryption typez=Failed to create PKCS12 (does the key match the certificate?))1r   Ú_check_bytesr‚   r   r  rK   r}   ÚBestAvailableEncryptionrM   r§   ÚNID_aes_256_cbcÚ&NID_pbe_WithSHA1And3_Key_TripleDES_CBCrJ  Ú_KeySerializationEncryptionÚ_formatr   ÚPKCS12Ú_key_cert_algorithmr*   ÚPBESv1SHA1And3KeyTripleDESCBCÚPBESv2SHA256AndAES256CBCr   Ú
_hmac_hashÚCryptography_HAS_PKCS12_SET_MACr   rb   Ú_kdf_roundsr›   rÂ   Úsk_X509_new_nullrÃ   r_  r+   Úfriendly_namerõ   rO  ÚX509_alias_set1rc  Úsk_X509_pushÚbackendrI  r  ÚPKCS12_creater·   ÚPKCS12_set_macrZ  rË   Úi2d_PKCS12_biorÓ   )rT   ru   rý   rë   rr  rt  rJ  Únid_certÚnid_keyÚpkcs12_iterÚmac_iterÚmac_algÚ
keycertalgrk  Úossl_casÚcaÚca_aliasÚossl_carû   rg  Úname_bufÚ	ossl_certÚ	ossl_pkeyrd  r^   r0   s                             r9   Ú(serialize_key_and_certificates_to_pkcs12z0Backend.serialize_key_and_certificates_to_pkcs12®  só  € ð ˆØÐÝÔ˜v tÑ,Ô,Ð,åÐ*­MÔ,FÑGÔGð K	@ØˆHØˆGØˆKØˆHØ”i”nˆG‰GÝØ ¥-Ô"Gñ
ô 
ð E	@ð ŒyÔ<ð KØœ9Ô4�Øœ)Ô3��àœ9ÔK�Øœ)ÔJ�àˆKð ˆHà”i”nˆGØ+Ô4ˆH‰HåØ$¥mÔ&Oñô ñ0	@ð %Ô,ÝÔ*Ô1ð2ð 2ð
 ˆHØˆGàˆKàˆHØ+Ô4ˆHØ-ÔAˆJØ�TÔ?Ð?Ð?Øœ9ÔK�Øœ)ÔJ��Ø�tÔ<Ð<Ð<Ø”yÔDð Ý.ØLñô ð ð  œ9Ô4�Øœ)Ô3��à!Ð)Ð)Ð)ð $Ô.Ð:Ø”yÔ@ð Ý.ð.ñô ð ð ×>Ò>Ø(Ô3ñô �ð ×#Ò# G¨t¬y¬~Ò$=Ñ>Ô>Ð>Ð>àœ)œ.�à#Ô/Ð;Ø2Ô>�øõ Ð>Ñ?Ô?Ð?àˆ;�#˜c™(œ( aš-˜-Ø”i”nˆG‰Gà”i×0Ò0Ñ2Ô2ˆGØ”i—l’l 7¨D¬IÔ,BÑCÔCˆGð ˆHØð 1ñ 1�Ý˜bÕ"3Ñ4Ô4ð 2Ø!Ô/�HØ"Ÿošo¨b¬nÑ=Ô=�GØÐ'Ø"œi×7Ò7Ø# T¤Y¤^°Rñô ˜˜ð #œi×7Ò7Ø# X­s°8©}¬}ñô ˜ð ×'Ò'¨¨qªÑ1Ô1Ð1Ð1à"Ÿošo¨bÑ1Ô1�GØ—’ Ñ(Ô(Ð(Ø”i×,Ò,¨W°gÑ>Ô>�Ý×&Ò& s¨a¢xÑ0Ô0Ð0Ñ0à×-Ò-¨hÑ7Ô7ð )	¸<Ø×1Ò1°$Ñ7Ô7ð ¸8Ø59ÐM˜DŸOšO¨DÑ1Ô1Ð1¸t¼y¼~�	à+.¨?�D—N’N 3Ñ'Ô'Ð'ÀÄ	Äð ð ”i×-Ò-Ø ØØØØØØØØØñô �ð ˜$œ)œ.Ò(Ð(Ø!×1Ò1Ñ3Ô3�FÝ$ð,ð ñô ð ð )ð%ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð: ”	Ô9ðà˜tœyœ~Ò-Ð-à”	×(Ò(ØØ ØØ”I”NØØØñô ð ðC)	ð )	ð )	ñ )	ô )	ð )	ð )	ð )	ð )	ð )	ð )	øøøð )	ð )	ð )	ð )	ðV 	×Ò˜C 4¤9¤>Ò1Ñ2Ô2Ð2ØŒi�lŠl˜3 ¤	Ô 5Ñ6Ô6ˆà×%Ò%Ñ'Ô'ˆØŒi×&Ò& s¨CÑ0Ô0ˆØ×Ò˜C !šGÑ$Ô$Ð$Ø×!Ò! #Ñ&Ô&Ð&s8   Í>RÎBP?Ð3RÐ?Q	ÑRÑQ	ÑA	RÒR Ò#R c                óh   — | j         rdS | j        j        s| j        j        rdS | j        j        dk    S )NFTrC   )rP   rM   rã   r¥   ÚCryptography_HAS_POLY1305rS   s    r9   Úpoly1305_supportedzBackend.poly1305_supportedU  sC   € ØÔð 	<Ø�5àŒIÔ/ð	<àŒyÔ1ð	<ð �4à”9Ô6¸!Ò;Ð;r8   c                ó   — | j         j         S rG   r*  rS   s    r9   Úpkcs7_supportedzBackend.pkcs7_supported`  r,  r8   )rD   rE   )rD   rV   rG   )r\   r]   r^   r_   rD   rE   )rD   rk   )ro   rp   )ro   rp   rD   r]   )rD   r]   )r�   r   r�   r)   rD   r]   )r�   r   r�   r)   rD   r   )rD   r´   )r¸   rk   r¹   rk   rD   r]   )r½   r¾   rD   r/   )rD   r¾   )rÚ   r   rD   r]   )rë   rì   rD   rí   )rö   rí   rD   rì   )rý   r-   rD   rí   )r^   r´   rD   r  )r  r  rD   r]   )r  r  r  r  rD   r]   )ro   r%  r  r  rD   r]   )r@  rk   rD   rE   )r½   r¾   rJ  rK  rD   rL  )r½   r¾   rJ  rK  rD   r,   )ru   rK  rý   rp  rë   rq  rr  rs  rt  ru  rD   r¾   )Vr4   r5   r6   Ú__doc__ru   rB   Ú__annotations__r   r’   r   rÕ   rÖ   r×   rØ   Ú
SHA512_224Ú
SHA512_256ÚSHA3_224ÚSHA3_256ÚSHA3_384ÚSHA3_512ÚSHAKE128ÚSHAKE256rƒ   r   Ú	SECP224R1Ú	SECP256R1Ú	SECP384R1Ú	SECP521R1r  Ú_fips_rsa_min_key_sizeÚ_fips_rsa_min_public_exponentÚ_fips_dsa_min_modulusÚ_fips_dh_min_key_sizeÚ_fips_dh_min_modulusrU   r[   rb   rd   rY   rn   r{   r   r„   r‰   rŒ   rŽ   r—   rž   rR   r­   r±   r³   r·   r¼   rÆ   rË   rÓ   rÙ   rß   rá   rä   ræ   rê   rõ   rü   r  r  r  r$  r(  r+  r/  r3  r7  r:  r<  r?  rD  Ú
contextlibÚcontextmanagerrI  rT  rQ  rš  r�  rŸ  r7   r8   r9   r;   r;   K   s  € € € € € € ðð ð €Dð/ð /ð /€Jð ð ð ñ ð �F€Mð 	ŒØŒØŒØŒØÔØÔØŒØŒØŒØŒØŒØŒð€Lð 	ŒØ
ŒØ
ŒØ
Œð	Ðð "ÐØ$)Ð!Ø ™IÐØ ÐØÐ 5Ñ5Ðð
)ð 
)ð 
)ð 
)ð
ð 
ð 
ð 
ð :>ð:ð :ð :ð :ð :ð<ð <ð <ð <ð	ð 	ð 	ð 	ð/ð /ð /ð /ð	ð 	ð 	ð 	ðð ð ð ð
(ð (ð (ð (ð.ð .ð .ð .ð:ð :ð :ð :ð.ð .ð .ð .ð,ð ,ð ,ð ,ð>ð >ð >ð >ðHð Hð Hð HðTKð Kð Kð Kð
Kð Kð Kð Kð
.ð .ð .ð .ð2ð 2ð 2ð 2ð
ð 
ð 
ð 
ðKð Kð Kð Kð	ð 	ð 	ð	ð 	ð 	ð 	ð
ð 
ð 
ð 
ðð ð ð ð&7ð 7ð 7ð 7ð
ð 
ð 
ð 
ð
8ð 8ð 8ð 8ð

ð 
ð 
ð 
ð
ð ð ð ðGð Gð Gð Gð?ð ?ð ?ð ?ð,ð ,ð ,ð ,ð\6ð 6ð 6ð 6ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð7ð 7ð 7ð 7ð<ð <ð <ð <ðð ð ð ð

ð 
ð 
ð 
ðð ð ð ð

ð 
ð 
ð 
ð9ð 9ð 9ð 9ðð ð ð ð ÔðLð Lñ ÔðLð,
ð 
ð 
ð 
ðJLð JLð JLð JLðXe'ð e'ð e'ð e'ðN	<ð 	<ð 	<ð 	<ð7ð 7ð 7ð 7ð 7ð 7r8   r;   c                  ó   — e Zd Zdd„Zdd
„ZdS )r¤   ÚfmtrV   c                ó   — || _         d S rG   )Ú_fmt)rT   r¶  s     r9   rU   zGetCipherByName.__init__e  s   € ØˆŒ	ˆ	ˆ	r8   r‰  r;   r�   r   r�   r)   c                ó¢  — | j                              ||¬¦  «                             ¦   «         }|j                             |                     d¦  «        ¦  «        }||j        j        k    rO|j        j        rC|j         	                    |j        j        |                     d¦  «        |j        j        ¦  «        }| 
                    ¦   «          |S )N)r�   r�   rf   )r¸  rX   ÚlowerrM   ÚEVP_get_cipherbynamerw   rK   r}   ÚCryptography_HAS_300_EVP_CIPHERÚEVP_CIPHER_fetchr·   )rT   r‰  r�   r�   Úcipher_namer–   s         r9   Ú__call__zGetCipherByName.__call__h  sÃ   € Ø”i×&Ò&¨f¸4Ð&Ñ@Ô@×FÒFÑHÔHˆØ”\×6Ò6Ø×Ò˜wÑ'Ô'ñ
ô 
ˆ
ð ˜'œ,Ô+Ò+Ð+Ø”Ô<ð ,ð !œ×6Ò6Ø”Ô!Ø×"Ò" 7Ñ+Ô+Ø”Ô!ñô ˆJð 	×ÒÑ!Ô!Ð!ØÐr8   N)r¶  rV   )r‰  r;   r�   r   r�   r)   )r4   r5   r6   rU   r¿  r7   r8   r9   r¤   r¤   d  s<   € € € € € ðð ð ð ðð ð ð ð ð r8   r¤   r‰  r�   r   c                óx   — d|j         dz  › d�}| j                             |                     d¦  «        ¦  «        S )Nzaes-é   z-xtsrf   )r¹   rM   r»  rw   )r‰  r�   r�   r¾  s       r9   r¦   r¦   }  s=   € Ø3˜œ¨AÑ-Ð3Ð3Ð3€KØŒ<×,Ò,¨[×-?Ò-?ÀÑ-HÔ-HÑIÔIÐIr8   )r‰  r;   r�   r   )IÚ
__future__r   Úcollectionsr³  r¨   ÚtypingÚcryptographyr   r   Úcryptography.exceptionsr   Ú$cryptography.hazmat.backends.opensslr   Ú,cryptography.hazmat.backends.openssl.ciphersr   Ú"cryptography.hazmat.bindings._rustr	   rN   Ú$cryptography.hazmat.bindings.opensslr
   Úcryptography.hazmat.primitivesr   r   Ú*cryptography.hazmat.primitives._asymmetricr   Ú)cryptography.hazmat.primitives.asymmetricr   r"  Ú1cryptography.hazmat.primitives.asymmetric.paddingr   r   r   r   Ú/cryptography.hazmat.primitives.asymmetric.typesr   Ú&cryptography.hazmat.primitives.ciphersr   Ú1cryptography.hazmat.primitives.ciphers.algorithmsr   r   r   r   r   r   r   r   r   r   r   r    Ú,cryptography.hazmat.primitives.ciphers.modesr!   r"   r#   r$   r%   r&   r'   r(   r)   Ú3cryptography.hazmat.primitives.serialization.pkcs12r*   r+   r,   r-   r.   Ú
namedtupler/   r3   r;   r¤   r¦   r‰  r7   r8   r9   ú<module>rÕ     sƒ  ðð
 #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€à $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø GÐ GÐ GÐ GÐ GÐ GØ FÐ FÐ FÐ FÐ FÐ FØ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø HÐ HÐ HÐ HÐ HÐ HØ 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø IÐ IÐ IÐ IÐ IÐ Iðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ðð ð ð ð ð ð ð ð ð ð ð ð ð ð $ˆ[Ô# L°5¸*Ð2EÑFÔF€
ð	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ðV7ð V7ð V7ð V7ð V7ñ V7ô V7ð V7ðrð ð ð ð ñ ô ð ð2Jð Jð Jð Jð
 ˆ'‰)Œ)€€€r8   