+
    ½¾jöS  ã                  ó
  a€ 0 t $ R t^ RIHt ^ RIt^ RIHt ^ RIH	t	 ^ RI
Ht  ^ RIHt ^ RIt^ RIt^ RIt^ R	IHt ^R
IHt ]P.                  '       d   ^ RIHt RR.t]P6                  P8                  ]P:                  P<                  ]P6                  P>                  ]P:                  P<                  /t R]!R&   ]"! ]R4      '       d=   ]"! ]P:                  R4      '       d$   ]P:                  PF                  ] ]PH                  &   ]"! ]R4      '       d=   ]"! ]P:                  R4      '       d$   ]P:                  PJ                  ] ]PL                  &   ]"! ]R4      '       d=   ]"! ]P:                  R4      '       d$   ]P:                  PN                  ] ]PP                  &   ]PR                  ]P:                  PT                  ]PV                  ]P:                  PX                  ]PZ                  ]P:                  PX                  ]P:                  P\                  ,           /t/]/Pa                  4        U Uu/ uF  w  rWbK	  	  upp t1]2! ]P:                  R^ 4      ]2! ]P:                  R^ 4      ,          t3R]!R&   ]2! ]P:                  R^ 4      t4R]!R&   ]2! ]P:                  R^ 4      t5R]!R&   ]2! ]P:                  R^ 4      t6R]!R&   ]2! ]P:                  R ^ 4      t7R]!R!&   ]Pp                  Pr                  ]3]Pp                  Pt                  ]3]Pp                  Pv                  ]3]4,          ]Pp                  Px                  ]3]4,          ]5,          ]Pp                  Pz                  ]3]4,          ]5,          ]6,          ]Pp                  P|                  ]3]4,          ]5,          ]6,          /t?R]!R"&   ]Pp                  Pr                  ]3]4,          ]5,          ]6,          ]7,          ]Pp                  Pt                  ]3]5,          ]6,          ]7,          ]Pp                  Pv                  ]3]6,          ]7,          ]Pp                  Px                  ]3]7,          ]Pp                  Pz                  ]3]Pp                  P|                  ]3/t@R]!R#&   R$tA]P6                  P„                  tC]Pˆ                  ! ]E4      tFR% R& ltGR' R( ltHR) R* ltIR+ R, ltJR- R. ltKR/ R0 ltL ! R1 R24      tM]Pœ                  ]MnN         ! R3 R44      tOR5 R6 ltPR#   ] d     ! R R]4      t ELÒi ; iu upp i )7a   
Module for using pyOpenSSL as a TLS backend. This module was relevant before
the standard library ``ssl`` module supported SNI, but now that we've dropped
support for Python 2.7 all relevant Python versions support SNI so
**this module is no longer recommended**.

This needs the following packages installed:

* `pyOpenSSL`_ (tested with 19.0.0)
* `cryptography`_ (minimum 2.3, from pyopenssl)
* `idna`_ (minimum 2.1, from cryptography)

However, pyOpenSSL depends on cryptography, so while we use all three directly here we
end up having relatively few packages required.

You can install them with the following command:

.. code-block:: bash

    $ python -m pip install pyopenssl cryptography idna

To activate certificate checking, call
:func:`~urllib3.contrib.pyopenssl.inject_into_urllib3` from your Python code
before you begin making HTTP requests. This can be done in a ``sitecustomize``
module, or at any other time before your application begins using ``urllib3``,
like this:

.. code-block:: python

    try:
        import urllib3.contrib.pyopenssl
        urllib3.contrib.pyopenssl.inject_into_urllib3()
    except ImportError:
        pass

.. _pyopenssl: https://www.pyopenssl.org
.. _cryptography: https://cryptography.io
.. _idna: https://github.com/kjd/idna
)ÚannotationsN)Úx509)Úload_pem_private_key)ÚNameOID)ÚUnsupportedExtensionc                  ó   € ] tR t^4tRtR# )r   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    ÚX/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/urllib3/contrib/pyopenssl.pyr   r   4   s   † Ûr   r   )Úsocket)Úutil©ÚX509Úinject_into_urllib3Úextract_from_urllib3zdict[int, int]Ú_openssl_versionsÚPROTOCOL_TLSv1ÚTLSv1_METHODÚPROTOCOL_TLSv1_1ÚTLSv1_1_METHODÚPROTOCOL_TLSv1_2ÚTLSv1_2_METHODÚOP_NO_SSLv2ÚOP_NO_SSLv3ÚintÚ_OP_NO_SSLv2_OR_SSLv3ÚOP_NO_TLSv1Ú_OP_NO_TLSv1ÚOP_NO_TLSv1_1Ú_OP_NO_TLSv1_1ÚOP_NO_TLSv1_2Ú_OP_NO_TLSv1_2ÚOP_NO_TLSv1_3Ú_OP_NO_TLSv1_3Ú_openssl_to_ssl_minimum_versionÚ_openssl_to_ssl_maximum_versioni @  c               ó   € V ^8„  d   QhRR/# ©é   ÚreturnÚNoner   )Úformats   "r   Ú__annotate__r1   �   s   € ÷ "ñ "˜Tñ "r   c                 óª   € \        4        \        \        n        \        \        P                  n        R\        n        R\        P                  n        R# )z7Monkey-patch urllib3 with PyOpenSSL-backed SSL-support.TN)Ú_validate_dependencies_metÚPyOpenSSLContextr   Ú
SSLContextÚssl_ÚIS_PYOPENSSLr   r   r   r   r   �   s1   € ô Ô ä&„D„OÜ+„D‡I�IÔØ„DÔØ!„D‡I�IÖr   c               ó   € V ^8„  d   QhRR/# r,   r   )r0   s   "r   r1   r1   ˜   s   € ÷ #ñ #˜dñ #r   c                 ó–   € \         \        n        \         \        P                  n        R\        n        R\        P                  n        R# )z4Undo monkey-patching by :func:`inject_into_urllib3`.FN)Úorig_util_SSLContextr   r5   r6   r7   r   r   r   r   r   ˜   s+   € ô +„D„OÜ/„D‡I�IÔØ„DÔØ"„D‡I�IÖr   c               ó   € V ^8„  d   QhRR/# r,   r   )r0   s   "r   r1   r1   ¡   s   € ÷ 
ñ 
 Dñ 
r   c                 ó”   € ^ RI Hp  \        V RR4      f   \        R4      h^ RIHp V! 4       p\        VRR4      f   \        R4      hR# )zo
Verifies that PyOpenSSL's package-level dependencies have been met.
Throws `ImportError` if they are not met.
)Ú
ExtensionsÚget_extension_for_classNzX'cryptography' module missing required functionality.  Try upgrading to v1.3.4 or newer.r   Ú_x509zS'pyOpenSSL' module missing required functionality. Try upgrading to v0.14 or newer.)Úcryptography.x509.extensionsr=   ÚgetattrÚImportErrorÚOpenSSL.cryptor   )r=   r   r   s      r   r3   r3   ¡   s[   € õ 8äˆzÐ4°dÓ;ÒCÜð0ó
ð 	
õ $á‹6€DÜˆt�W˜dÓ#Ò+Üð/ó
ð 	
ñ ,r   c               ó    € V ^8„  d   QhRRRR/# )r-   ÚnameÚstrr.   ú
str | Noner   )r0   s   "r   r1   r1   »   s   € ÷ &(ñ &(˜Sð &( Zñ &(r   c                ó^   € R R lpRV 9   d   V # V! V 4      pVf   R# VP                  R4      # )a  
Converts a dNSName SubjectAlternativeName field to the form used by the
standard library on the given Python version.

Cryptography produces a dNSName as a unicode string that was idna-decoded
from ASCII bytes. We need to idna-encode that string to get it back, and
then on Python 3 we also need to convert to unicode via UTF-8 (the stdlib
uses PyUnicode_FromStringAndSize on it, which decodes via UTF-8).

If the name cannot be idna-encoded then we return None signalling that
the name given should be skipped.
c               ó    € V ^8„  d   QhRRRR/# )r-   rE   rF   r.   úbytes | Noner   )r0   s   "r   r1   Ú(_dnsname_to_stdlib.<locals>.__annotate__É   s   € ÷ ñ ˜#ð  ,ñ r   c                ó   € ^ RI p R FQ  pV P                  V4      '       g   K  V \        V4      R p VP                  R4      VP                  V 4      ,           u # 	  VP                  V 4      #   TP                  P
                   d     R# i ; i)z²
Borrowed wholesale from the Python Cryptography Project. It turns out
that we can't just safely call `idna.encode`: it can explode for
wildcard names. This avoids that problem.
NÚascii)z*.Ú.)ÚidnaÚ
startswithÚlenÚencodeÚcoreÚ	IDNAError)rE   rO   Úprefixs   &  r   Úidna_encodeÚ'_dnsname_to_stdlib.<locals>.idna_encodeÉ   s   € ó 	ð	Û%�Ø—?‘? 6×*Ô*Ø¤ F£ Ð.�DØ!Ÿ=™=¨Ó1°D·K±KÀÓ4EÕEÒEñ &ð —;‘;˜tÓ$Ð$øØ�y‰y×"Ñ"ô 	Úð	ús   †A. ¤6A. ÁA. Á.BÂBÚ:Núutf-8)Údecode)rE   rV   Úencoded_names   &  r   Ú_dnsname_to_stdlibr\   »   s9   € õð$ ˆd„{Øˆá˜tÓ$€LØÒÙØ×Ñ˜wÓ'Ð'r   c               ó    € V ^8„  d   QhRRRR/# )r-   Ú	peer_certr   r.   zlist[tuple[str, str]]r   )r0   s   "r   r1   r1   ä   s   € ÷ -ñ - ð -Ð*?ñ -r   c                ób  € V P                  4       p VP                  P                  \        P                  4      P
                  p\        \        TP                  \        P                   4      4       Uu. uF  pTf   K	  RT3NK  	  ppTP#                  R TP                  \        P$                  4       4       4       T#   \        P                   d    . u # \        P                  \        \        P                  \        3 d#   p\        P                  RT4       . u Rp?# Rp?ii ; iu upi )zM
Given an PyOpenSSL certificate, provides all the subject alternative names.
z­A problem was encountered with the certificate that prevented urllib3 from finding the SubjectAlternativeName field. This can affect certificate validation. The error was %sNÚDNSc              3  ó<   "  € T F  pR \        V4      3x € K  	  R# 5i)z
IP AddressN)rF   )Ú.0rE   s   & r   Ú	<genexpr>Ú$get_subj_alt_name.<locals>.<genexpr>  s   é € ð Ù.U dˆ”s˜4“yÕ!Ó.Uùs   ‚)Úto_cryptographyÚ
extensionsr>   r   ÚSubjectAlternativeNameÚvalueÚExtensionNotFoundÚDuplicateExtensionr   ÚUnsupportedGeneralNameTypeÚUnicodeErrorÚlogÚwarningÚmapr\   Úget_values_for_typeÚDNSNameÚextendÚ	IPAddress)r^   ÚcertÚextÚerE   Únamess   &     r   Úget_subj_alt_namerx   ä   s  € ð ×$Ñ$Ó&€DðØ�o‰o×5Ñ5´d×6QÑ6QÓR×XÑXˆô: Ô*¨C×,CÑ,CÄDÇLÁLÓ,QÔRóáRˆDØô 	ˆ�‹ÙRð 
ð ð
 
‡L�Lñ Ø.1×.EÑ.EÄdÇnÁnÔ.Uóô ð €LøôG ×!Ñ!ô àŠ	ä×ÑÜÜ×'Ñ'Üð	ô ô 	�‰ð>ð ô		
ð �	ûðüò.s5   ’3C  Á4D,Á?D,Ã D)Ã,D)ÄD)ÄD$ÄD)Ä$D)c               ó    € V ^8„  d   QhRRRR/# )r-   r^   r   r.   rG   r   )r0   s   "r   r1   r1     s   € ÷ ?ñ ? ð ?¨ñ ?r   c                óà   € V P                  4       pVP                  P                  \        P                  4      pV'       d-   \
        P                  ! \        V^ ,          P                  4      # R# )zB
Given a pyOpenSSL certificate, return the subject's common name.
N)	re   ÚsubjectÚget_attributes_for_oidr   ÚCOMMON_NAMEÚtypingÚcastrF   rh   )r^   rt   rw   s   &  r   Ú_get_common_namer€     sL   € ð ×$Ñ$Ó&€DØ�L‰L×/Ñ/´×0CÑ0CÓD€Eß/4Œ6�;Š;”s˜E !�HŸN™NÓ+Ð>¸$Ð>r   c                  ó"  € ] tR tRtRtR%R R lltR R ltR R ltR	 R
 ltR R lt	R R lt
R R ltR R ltR R ltR R ltR R lt]P"                  R&R R ll4       t]P"                  R R l4       tR&R R lltR R  ltR! R" ltR#tR$# )'ÚWrappedSocketi  z@API-compatibility wrapper for Python OpenSSL's Connection-class.c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r-   Ú
connectionúOpenSSL.SSL.Connectionr   Ú
socket_clsÚsuppress_ragged_eofsÚboolr.   r/   r   )r0   s   "r   r1   ÚWrappedSocket.__annotate__   s2   € ÷ 
ñ 
à*ð
ð ð
ð #ð	
ð
 
ñ
r   c                	óF   € Wn         W n        W0n        ^ V n        RV n        R# ©é    FN)r„   r   r‡   Ú_io_refsÚ_closed)Úselfr„   r   r‡   s   &&&&r   Ú__init__ÚWrappedSocket.__init__   s"   € ð %ŒØŒØ$8Ô!ØˆŒØˆŽr   c               ó   € V ^8„  d   QhRR/# ©r-   r.   r   r   )r0   s   "r   r1   r‰   ,  s   € ÷ $ñ $˜ñ $r   c                	ó6   € V P                   P                  4       # ©N)r   Úfileno©r�   s   &r   r–   ÚWrappedSocket.fileno,  s   € Ø�{‰{×!Ñ!Ó#Ð#r   c               ó   € V ^8„  d   QhRR/# r,   r   )r0   s   "r   r1   r‰   0  s   € ÷ ñ  4ñ r   c                	ó¢   € V P                   ^ 8”  d   V ;P                   ^,          un         V P                  '       d   V P                  4        R# R# ©rŒ   N)r�   rŽ   Úcloser—   s   &r   Ú_decref_socketiosÚWrappedSocket._decref_socketios0  s3   € Ø�=‰=˜1ÔØ�MŠM˜QÕ�MØ�<�<ˆ<Ø�J‰JŽLñ r   c               ó$   € V ^8„  d   QhRRRRRR/# )r-   Úargsú
typing.AnyÚkwargsr.   Úbytesr   )r0   s   "r   r1   r‰   6  s!   € ÷ ñ ˜*ð °
ð ¸uñ r   c                	ób  €  V P                   P                  ! V/ VB pV#   \        P                  P                   dV   pT P
                  '       d   TP                  R8X  d    Rp?R# \        TP                  ^ ,          \        T4      4      ThRp?i\        P                  P                   d=    T P                   P                  4       \        P                  P                  8X  d    R# h \        P                  P                   dh   p\        P                  ! T P                  T P                  P!                  4       4      '       g   \#        R4      ThT P                  ! T/ TB u Rp?# Rp?i\        P                  P$                   d!   p\&        P(                  ! RT: 24      ThRp?ii ; i)é   Nr   úThe read operation timed outúread error: ©éÿÿÿÿzUnexpected EOF)r„   ÚrecvÚOpenSSLÚSSLÚSysCallErrorr‡   r    ÚOSErrorrF   ÚZeroReturnErrorÚget_shutdownÚRECEIVED_SHUTDOWNÚWantReadErrorr   Úwait_for_readr   Ú
gettimeoutÚTimeoutErrorÚErrorÚsslÚSSLError)r�   r    r¢   Údatarv   s   &*,  r   rª   ÚWrappedSocket.recv6  s6  € ð	Ø—?‘?×'Ò'¨Ð8°Ñ8ˆDð* ˆKøô) �{‰{×'Ñ'ô 	8Ø×(×(Ð(¨Q¯V©VÐ7MÔ-MÝä˜aŸf™f Q�i¬¨Q«Ó0°aÐ7ûÜ�{‰{×*Ñ*ô 	Ø�‰×+Ñ+Ó-´·±×1NÑ1NÔNÚàÜ�{‰{×(Ñ(ô 	2Ü×%Ò% d§k¡k°4·;±;×3IÑ3IÓ3K×LÒLÜ"Ð#AÓBÈÐIà—y’y $Ð1¨&Ñ1Õ1ûô �{‰{× Ñ ô 	<Ü—,’, ¨a©UÐ3Ó4¸!Ð;ûð	<úsQ   ‚   F.¿#BÁ('BÂ F.Â08F.Ã+F.Ä	F.Ä
AE,Å&F.Å, F.ÆF.ÆF)Æ)F.c               ó$   € V ^8„  d   QhRRRRRR/# )r-   r    r¡   r¢   r.   r   r   )r0   s   "r   r1   r‰   O  s!   € ÷ <ñ <˜zð <°Zð <ÀCñ <r   c                	ó^  €  V P                   P                  ! V/ VB #   \        P                  P                   dV   pT P
                  '       d   TP                  R8X  d    Rp?^ # \        TP                  ^ ,          \        T4      4      ThRp?i\        P                  P                   d=    T P                   P                  4       \        P                  P                  8X  d    ^ # h \        P                  P                   dh   p\        P                  ! T P                  T P                  P!                  4       4      '       g   \#        R4      ThT P                  ! T/ TB u Rp?# Rp?i\        P                  P$                   d!   p\&        P(                  ! RT: 24      ThRp?ii ; i)r¥   Nr¦   r§   r¨   )r„   Ú	recv_intor«   r¬   r­   r‡   r    r®   rF   r¯   r°   r±   r²   r   r³   r   r´   rµ   r¶   r·   r¸   )r�   r    r¢   rv   s   &*, r   r½   ÚWrappedSocket.recv_intoO  s.  € ð	<Ø—?‘?×,Ò,¨dÐ=°fÑ=Ð=øÜ�{‰{×'Ñ'ô 	8Ø×(×(Ð(¨Q¯V©VÐ7MÔ-MÝä˜aŸf™f Q�i¬¨Q«Ó0°aÐ7ûÜ�{‰{×*Ñ*ô 	Ø�‰×+Ñ+Ó-´·±×1NÑ1NÔNÚàÜ�{‰{×(Ñ(ô 	7Ü×%Ò% d§k¡k°4·;±;×3IÑ3IÓ3K×LÒLÜ"Ð#AÓBÈÐIà—~’~ tÐ6¨vÑ6Õ6ûô �{‰{× Ñ ô 	<Ü—,’, ¨a©UÐ3Ó4¸!Ð;ûð	<úsQ   ‚ žF,½#BÁ&'BÂ F,Â.8F,Ã)F,ÄF,ÄAE*Å$F,Å* F,ÆF,ÆF'Æ'F,c               ó    € V ^8„  d   QhRRRR/# )r-   ÚtimeoutÚfloatr.   r/   r   )r0   s   "r   r1   r‰   f  s   € ÷ /ñ / %ð /¨Dñ /r   c                	ó8   € V P                   P                  V4      # r•   )r   Ú
settimeout)r�   rÀ   s   &&r   rÃ   ÚWrappedSocket.settimeoutf  s   € Ø�{‰{×%Ñ% gÓ.Ð.r   c               ó    € V ^8„  d   QhRRRR/# )r-   r¹   r£   r.   r   r   )r0   s   "r   r1   r‰   i  s   € ÷ 	8ñ 	8 Uð 	8¨sñ 	8r   c                	ó¼  €   V P                   P                  V4      #   \        P                  P                   dV   p\
        P                  ! T P                  T P                  P                  4       4      '       g   \        4       Th Rp?KŒ  Rp?i\        P                  P                   d-   p\        TP                  ^ ,          \        T4      4      ThRp?ii ; i©TN)r„   Úsendr«   r¬   ÚWantWriteErrorr   Úwait_for_writer   r´   rµ   r­   r®   r    rF   )r�   r¹   rv   s   && r   Ú_send_until_doneÚWrappedSocket._send_until_donei  s˜   € Øð8Ø—‘×+Ñ+¨DÓ1Ð1øÜ—;‘;×-Ñ-ô Ü×*Ò*¨4¯;©;¸¿¹×8NÑ8NÓ8P×QÒQÜ&›.¨aÐ/ÝûÜ—;‘;×+Ñ+ô 8Ü˜aŸf™f Q�i¬¨Q«Ó0°aÐ7ûð8ús'   ƒ žC½A
BÂ CÂ.CÂ/'CÃCc               ó    € V ^8„  d   QhRRRR/# )r-   r¹   r£   r.   r/   r   )r0   s   "r   r1   r‰   t  s   € ÷ ñ ˜Eð  dñ r   c                	óz   € ^ pV\        V4      8  d)   V P                  WV\        ,            4      pW#,          pK8  R# r›   )rQ   rË   ÚSSL_WRITE_BLOCKSIZE)r�   r¹   Ú
total_sentÚsents   &&  r   ÚsendallÚWrappedSocket.sendallt  s@   € Øˆ
Øœ3˜t›9Ô$Ø×(Ñ(Ø *Ô/BÕ"BÐCóˆDð ÕŠJñ	 %r   c               ó    € V ^8„  d   QhRRRR/# )r-   Úhowr   r.   r/   r   )r0   s   "r   r1   r‰   |  s   € ÷ @ñ @˜Cð @ Dñ @r   c                	óÀ   €  V P                   P                  4        R#   \        P                  P                   d!   p\
        P                  ! R T: 24      ThRp?ii ; i)zshutdown error: N)r„   Úshutdownr«   r¬   r¶   r·   r¸   )r�   rÕ   rv   s   && r   r×   ÚWrappedSocket.shutdown|  sM   € ð	@Ø�O‰O×$Ñ$Ö&øÜ�{‰{× Ñ ô 	@Ü—,’,Ð!1°!±Ð7Ó8¸aÐ?ûð	@ús   ‚ žA½AÁAc               ó   € V ^8„  d   QhRR/# r,   r   )r0   s   "r   r1   r‰   ‚  s   € ÷ ñ �tñ r   c                	óZ   € R V n         V P                  ^ 8:  d   V P                  4        R# R# rÇ   )rŽ   r�   Ú_real_closer—   s   &r   rœ   ÚWrappedSocket.close‚  s&   € ØˆŒØ�=‰=˜AÔØ×ÑÖñ r   c               ó   € V ^8„  d   QhRR/# r,   r   )r0   s   "r   r1   r‰   ‡  s   € ÷ ñ ˜Tñ r   c                	ó„   €  V P                   P                  4       #   \        P                  P                   d     R # i ; ir•   )r„   rœ   r«   r¬   r¶   r—   s   &r   rÛ   ÚWrappedSocket._real_close‡  s6   € ð	Ø—?‘?×(Ñ(Ó*Ð*øÜ�{‰{× Ñ ô 	Úð	ús   ‚ œ?¾?c               ó    € V ^8„  d   QhRRRR/# )r-   Úbinary_formztyping.Literal[False]r.   z"dict[str, list[typing.Any]] | Noner   )r0   s   "r   r1   r‰   Ž  s   € ÷ 1ñ 1Ø0ð1à	+ñ1r   c                	ó   € R # r•   r   ©r�   rá   s   &&r   ÚgetpeercertÚWrappedSocket.getpeercert�  s   € ñ .1r   c               ó    € V ^8„  d   QhRRRR/# )r-   rá   ztyping.Literal[True]r.   rJ   r   )r0   s   "r   r1   r‰   “  s   € ×QÑQÐ';ÐQÀÑQr   c                	ó   € R # r•   r   rã   s   &&r   rä   rå   ’  s   € ÙNQr   c               ó    € V ^8„  d   QhRRRR/# )r-   rá   rˆ   r.   z*dict[str, list[typing.Any]] | bytes | Noner   )r0   s   "r   r1   r‰   •  s   € ÷ 
ñ 
Øð
à	3ñ
r   c                	óú   € V P                   P                  4       pVf   R # V'       d9   \        P                  P	                  \        P                  P
                  V4      # RR\        V4      333R\        V4      /# )Nr{   Ú
commonNameÚsubjectAltName)r„   Úget_peer_certificater«   ÚcryptoÚdump_certificateÚFILETYPE_ASN1r€   rx   )r�   rá   r   s   && r   rä   rå   •  sp   € ð �‰×3Ñ3Ó5ˆàŠ<ÙçÜ—>‘>×2Ñ2´7·>±>×3OÑ3OÐQUÓVÐVð ˜,Ô(8¸Ó(>Ð?ÐAÐCØÔ/°Ó5ð
ð 	
r   c               ó   € V ^8„  d   QhRR/# )r-   r.   rF   r   )r0   s   "r   r1   r‰   ¥  s   € ÷ ;ñ ;˜ñ ;r   c                	ó6   € V P                   P                  4       # r•   )r„   Úget_protocol_version_namer—   s   &r   ÚversionÚWrappedSocket.version¥  s   € Ø�‰×8Ñ8Ó:Ð:r   c               ó   € V ^8„  d   QhRR/# )r-   r.   rG   r   )r0   s   "r   r1   r‰   ¨  s   € ÷ ;ñ ;¨
ñ ;r   c                	ój   € V P                   P                  4       pV'       d   VP                  4       # R # r•   )r„   Úget_alpn_proto_negotiatedrZ   )r�   Ú
alpn_protos   & r   Úselected_alpn_protocolÚ$WrappedSocket.selected_alpn_protocol¨  s*   € Ø—_‘_×>Ñ>Ó@ˆ
ß&0ˆz× Ñ Ó"Ð:°dÐ:r   )rŽ   r�   r„   r   r‡   N)T)F)r	   r
   r   r   Ú__doc__r�   r–   r�   rª   r½   rÃ   rË   rÒ   r×   rœ   rÛ   r~   Úoverloadrä   ró   rù   r   r   r   r   r‚   r‚     s}   † ÙJ÷
õ$õõõ2<õ./õ	8õõ@õõ
ð ‡_�_ö1ó ð1ð ‡_�_ÜQó ØQ÷
õ ;÷;ñ ;r   r‚   c                  óÆ  € ] tR tRtRtR R lt]R R l4       t]P                  R R l4       t]R	 R
 l4       t	]	P                  R R l4       t	]R R l4       t
]
P                  R R l4       t
R R ltR R ltR)R R lltR*R R lltR R ltR+R R lltR R lt]R  R! l4       t]P                  R" R# l4       t]R$ R% l4       t]P                  R& R' l4       tR(tR# ),r4   i°  z²
I am a wrapper class for the PyOpenSSL ``Context`` object. I am responsible
for translating the interface of the standard library ``SSLContext`` object
to calls into PyOpenSSL.
c               ó    € V ^8„  d   QhRRRR/# )r-   Úprotocolr   r.   r/   r   )r0   s   "r   r1   ÚPyOpenSSLContext.__annotate__·  s   € ÷ @ñ @ ð @¨ñ @r   c                	óH  € \         V,          V n        \        P                  P	                  V P                  4      V n        ^ V n        RV n        \        P                  P                  V n        \        P                  P                  V n        \        P                  V n        R# r‹   )r   rÿ   r«   r¬   ÚContextÚ_ctxÚ_optionsÚcheck_hostnamer·   Ú
TLSVersionÚMINIMUM_SUPPORTEDÚ_minimum_versionÚMAXIMUM_SUPPORTEDÚ_maximum_versionÚVERIFY_X509_TRUSTED_FIRSTÚ_verify_flags)r�   rÿ   s   &&r   r�   ÚPyOpenSSLContext.__init__·  si   € Ü)¨(Õ3ˆŒÜ—K‘K×'Ñ'¨¯©Ó6ˆŒ	ØˆŒØ#ˆÔÜ%(§^¡^×%EÑ%EˆÔÜ%(§^¡^×%EÑ%EˆÔÜ"%×"?Ñ"?ˆÖr   c               ó   € V ^8„  d   QhRR/# r“   r   )r0   s   "r   r1   r   Á  s   € ÷ ñ ˜ñ r   c                	ó   € V P                   # r•   )r  r—   s   &r   ÚoptionsÚPyOpenSSLContext.optionsÀ  s   € à�}‰}Ðr   c               ó    € V ^8„  d   QhRRRR/# ©r-   rh   r   r.   r/   r   )r0   s   "r   r1   r   Å  s   € ÷  ñ  ˜Sð   Tñ  r   c                	ó2   € Wn         V P                  4        R # r•   )r  Ú_set_ctx_options©r�   rh   s   &&r   r  r  Ä  s   € àŒØ×ÑÖr   c               ó   € V ^8„  d   QhRR/# r“   r   )r0   s   "r   r1   r   Ê  s   € ÷ "ñ "˜cñ "r   c                	ó   € V P                   # r•   )r  r—   s   &r   Úverify_flagsÚPyOpenSSLContext.verify_flagsÉ  s   € à×!Ñ!Ð!r   c               ó    € V ^8„  d   QhRRRR/# r  r   )r0   s   "r   r1   r   Î  s   € ÷ Añ A #ð A¨$ñ Ar   c                	óx   € Wn         V P                  P                  4       P                  V P                   4       R # r•   )r  r  Úget_cert_storeÚ	set_flagsr  s   &&r   r  r  Í  s)   € à"ÔØ�	‰	× Ñ Ó"×,Ñ,¨T×-?Ñ-?Ö@r   c               ó   € V ^8„  d   QhRR/# r“   r   )r0   s   "r   r1   r   Ó  s   € ÷ Fñ F˜Sñ Fr   c                	óL   € \         V P                  P                  4       ,          # r•   )Ú_openssl_to_stdlib_verifyr  Úget_verify_moder—   s   &r   Úverify_modeÚPyOpenSSLContext.verify_modeÒ  s   € ä(¨¯©×)BÑ)BÓ)DÕEÐEr   c               ó    € V ^8„  d   QhRRRR/# )r-   rh   zssl.VerifyModer.   r/   r   )r0   s   "r   r1   r   ×  s   € ÷ Qñ Q ð Q°Dñ Qr   c                	ó\   € V P                   P                  \        V,          \        4       R # r•   )r  Ú
set_verifyÚ_stdlib_to_openssl_verifyÚ_verify_callbackr  s   &&r   r#  r$  Ö  s   € à�	‰	×ÑÔ6°uÕ=Ô?OÖPr   c               ó   € V ^8„  d   QhRR/# r,   r   )r0   s   "r   r1   r   Ú  s   € ÷ -ñ -¨$ñ -r   c                	ó:   € V P                   P                  4        R # r•   )r  Úset_default_verify_pathsr—   s   &r   r,  Ú)PyOpenSSLContext.set_default_verify_pathsÚ  s   € Ø�	‰	×*Ñ*Ö,r   c               ó    € V ^8„  d   QhRRRR/# )r-   Úcipherszbytes | strr.   r/   r   )r0   s   "r   r1   r   Ý  s   € ÷ +ñ + ;ð +°4ñ +r   c                	óŠ   € \        V\        4      '       d   VP                  R 4      pV P                  P	                  V4       R# )rY   N)Ú
isinstancerF   rR   r  Úset_cipher_list)r�   r/  s   &&r   Úset_ciphersÚPyOpenSSLContext.set_ciphersÝ  s/   € Ü�gœs×#Ò#Ø—n‘n WÓ-ˆGØ�	‰	×!Ñ! 'Ö*r   Nc               ó(   € V ^8„  d   QhRRRRRRRR/# )r-   ÚcafilerG   ÚcapathÚcadatarJ   r.   r/   r   )r0   s   "r   r1   r   â  s8   € ÷ Uñ UàðUð ðUð ð	Uð
 
ñUr   c                	óX  € Ve   VP                  R4      pVe   VP                  R4      p V P                  P                  W4       Ve   V P                  P                  V4       R # R #   \        P                  P
                   d!   p\        P                  ! RT: 24      ThR p?ii ; i)NrY   z%unable to load trusted certificates: )rR   r  Úload_verify_locationsr«   r¬   r¶   r·   r¸   )r�   r6  r7  r8  rv   s   &&&& r   r:  Ú&PyOpenSSLContext.load_verify_locationsâ  s—   € ð ÒØ—]‘] 7Ó+ˆFØÒØ—]‘] 7Ó+ˆFð	UØ�I‰I×+Ñ+¨FÔ;ØÒ!Ø—	‘	×/Ñ/°Ö7ñ "øä�{‰{× Ñ ô 	UÜ—,’,Ð!FÀqÁeÐLÓMÐSTÐTûð	Uús   ¬:A* Á*B)Â	B$Â$B)c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r-   ÚcertfilerF   ÚkeyfilerG   Úpasswordzstr | bytes | Noner.   r/   r   )r0   s   "r   r1   r   ó  s8   € ÷ "Rñ "Ràð"Rð ð"Rð %ð	"Rð
 
ñ"Rr   c                	ó’  a€  V P                   P                  V4       SEe   \        S\        4      '       g   SP	                  R4      o\        \        P                  P                  R4      ^ ,          4      ^8¼  db   \        T;'       g    TR4      ;_uu_ 4       pVP                  4       pR R R 4        \        XS4      pV P                   P                  V4       R # V P                   P                  V3R l4       V P                   P                  T;'       g    T4       R # V P                   P                  T;'       g    T4       R #   + '       g   i     L§; i  \         d    \        XR 4      p L¶i ; i  \        P                   P"                  \        \$        3 d!   p\&        P(                  ! RT: 24      ThR p?ii ; i)NrY   rN   Úrbc                 ó   <€ S# r•   r   )Ú_r?  s   *€r   Ú<lambda>Ú2PyOpenSSLContext.load_cert_chain.<locals>.<lambda>  s   ø€ ±xr   z"Unable to load certificate chain: )r  Úuse_certificate_chain_filer1  r£   rR   r   r«   Ú__version__ÚsplitÚopenÚreadr   Ú	TypeErrorÚuse_privatekeyÚset_passwd_cbÚuse_privatekey_filer¬   r¶   Ú
ValueErrorr·   r¸   )r�   r=  r>  r?  Úkey_fileÚkey_dataÚprivate_keyrv   s   &&&f    r   Úload_cert_chainÚ PyOpenSSLContext.load_cert_chainó  s\  ø€ ð	RØ�I‰I×0Ñ0°Ô:ØÓ#Ü! (¬E×2Ò2Ø'Ÿ™¨wÓ7�Hô ”w×*Ñ*×0Ñ0°Ó5°aÕ8Ó9¸RÔ?Ü˜g×1Ð1¨°4×8Ô8¸HØ#+§=¡=£?˜÷ 9ðKÜ&:¸8ÀXÓ&N˜ð —I‘I×,Ñ,¨[Ö9à—I‘I×+Ñ+Ô,?Ô@Ø—I‘I×1Ñ1°'×2EÐ2E¸XÖFà—	‘	×-Ñ-¨g×.AÐ.A¸ÖB÷# 9×8ûô %ô Kô
 ';¸8ÀTÓ&JšðKûô —‘×!Ñ!¤9¬jÐ9ô 	RÜ—,’,Ð!CÀAÁ5ÐIÓJÐPQÐQûð	Rúsr   ƒBE< ÂE< ÂEÂ-E< Â6E ÃE< Ã<E< ÄE< Ä%E< ÅE< ÅE	ÅE< ÅE9Å6E< Å8E9Å9E< Å<*GÆ&GÇGc               ó    € V ^8„  d   QhRRRR/# )r-   Ú	protocolszlist[bytes | str]r.   r/   r   )r0   s   "r   r1   r     s   € ÷ 4ñ 4Ð,=ð 4À$ñ 4r   c                	ó    € V Uu. uF#  p\         P                   P                  VR 4      NK%  	  ppV P                  P                  V4      # u upi )rM   )r   Úto_bytesr  Úset_alpn_protos)r�   rV  Úps   && r   Úset_alpn_protocolsÚ#PyOpenSSLContext.set_alpn_protocols  sB   € Ù=FÓG¹Y¸”T—Y‘Y×'Ñ'¨¨7Ö3¹Yˆ	ÐGØ�y‰y×(Ñ(¨Ó3Ð3ùò Hs   …)Ac               ó0   € V ^8„  d   QhRRRRRRRRRRR	R
/# )r-   Úsockr†   Úserver_siderˆ   Údo_handshake_on_connectr‡   Úserver_hostnamezbytes | str | Noner.   r‚   r   )r0   s   "r   r1   r     sF   € ÷ (ñ (àð(ð ð(ð "&ð	(ð
 #ð(ð ,ð(ð 
ñ(r   c                	ó¼  € \         P                  P                  V P                  V4      pV'       d^   \        P
                  P                  V4      '       g9   \        V\        4      '       d   VP                  R 4      pVP                  V4       VP                  4          VP                  4         \)        Ya4      #   \         P                  P                   dB   p\        P                  ! YP                  4       4      '       g   \!        R4      Th Rp?Ky  Rp?i\         P                  P"                   d!   p\$        P&                  ! RT: 24      ThRp?ii ; i)rY   zselect timed outNzbad handshake: )r«   r¬   Ú
Connectionr  r   r6   Úis_ipaddressr1  rF   rR   Úset_tlsext_host_nameÚset_connect_stateÚdo_handshaker²   r³   r´   rµ   r¶   r·   r¸   r‚   )r�   r^  r_  r`  r‡   ra  Úcnxrv   s   &&&&&&  r   Úwrap_socketÚPyOpenSSLContext.wrap_socket  s  € ô �k‰k×$Ñ$ T§Y¡Y°Ó5ˆ÷ ¤4§9¡9×#9Ñ#9¸/×#JÒ#JÜ˜/¬3×/Ò/Ø"1×"8Ñ"8¸Ó"A�Ø×$Ñ$ _Ô5à×ÑÔàðCØ× Ñ Ô"ð ä˜SÓ'Ð'øô —;‘;×,Ñ,ô Ü×)Ò)¨$·±Ó0A×BÒBÜ&Ð'9Ó:ÀÐAÝûÜ—;‘;×$Ñ$ô CÜ—l’l _°Q±EÐ#:Ó;ÀÐBûðCús*   Â"B> Â>EÃ6DÄ EÄ:EÄ;EÅEc               ó   € V ^8„  d   QhRR/# r,   r   )r0   s   "r   r1   r   :  s   € ÷ 
ñ 
 $ñ 
r   c                	óÀ   € V P                   P                  V P                  \        V P                  ,          ,          \
        V P                  ,          ,          4       R # r•   )r  Úset_optionsr  r)   r  r*   r
  r—   s   &r   r  Ú!PyOpenSSLContext._set_ctx_options:  sC   € Ø�	‰	×ÑØ�M‰MÜ-¨d×.CÑ.CÕDõEä-¨d×.CÑ.CÕDõEö	
r   c               ó   € V ^8„  d   QhRR/# r“   r   )r0   s   "r   r1   r   B  ó   € ÷ %ñ % ñ %r   c                	ó   € V P                   # r•   )r  r—   s   &r   Úminimum_versionÚ PyOpenSSLContext.minimum_versionA  ó   € à×$Ñ$Ð$r   c               ó    € V ^8„  d   QhRRRR/# )r-   rr  r   r.   r/   r   )r0   s   "r   r1   r   F  ó   € ÷  ñ  ¨sð  °tñ  r   c                	ó2   € Wn         V P                  4        R # r•   )r  r  )r�   rr  s   &&r   rr  rs  E  ó   € à /ÔØ×ÑÖr   c               ó   € V ^8„  d   QhRR/# r“   r   )r0   s   "r   r1   r   K  rp  r   c                	ó   € V P                   # r•   )r
  r—   s   &r   Úmaximum_versionÚ PyOpenSSLContext.maximum_versionJ  rt  r   c               ó    € V ^8„  d   QhRRRR/# )r-   r{  r   r.   r/   r   )r0   s   "r   r1   r   O  rv  r   c                	ó2   € Wn         V P                  4        R # r•   )r
  r  )r�   r{  s   &&r   r{  r|  N  rx  r   )r  r
  r  r  r  r  rÿ   )NNN)NN)FTTN)r	   r
   r   r   rû   r�   Úpropertyr  Úsetterr  r#  r,  r3  r:  rS  r[  ri  r  rr  r{  r   r   r   r   r4   r4   °  s  † ñõ@ð ôó ðð ‡^�^ô ó ð ð ô"ó ð"ð ×ÑôAó ðAð ôFó ðFð ×ÑôQó ðQõ-õ+÷
U÷""RõH4÷(õ>
ð ô%ó ð%ð ×Ñô ó ð ð ô%ó ð%ð ×Ñô ó ô r   r4   c               ó0   € V ^8„  d   QhRRRRRRRRRRR	R
/# )r-   rh  r…   r   r   Úerr_nor   Ú	err_depthÚreturn_coder.   rˆ   r   )r0   s   "r   r1   r1   T  sD   € ÷ ñ Ø	ðà
ðð ðð ð	ð
 ðð 
ñr   c                ó   € V^ 8H  # )rŒ   r   )rh  r   r‚  rƒ  r„  s   &&&&&r   r)  r)  T  s   € ð �Q‰;Ðr   )QÚ__conditional_annotations__rû   Ú
__future__r   ÚOpenSSL.SSLr«   Úcryptographyr   Ú,cryptography.hazmat.primitives.serializationr   Úcryptography.x509.oidr   Úcryptography.x509r   rB   Ú	ExceptionÚloggingr·   r~   r   r†   Ú r   ÚTYPE_CHECKINGrC   r   Ú__all__r6   ÚPROTOCOL_TLSr¬   ÚSSLv23_METHODÚPROTOCOL_TLS_CLIENTr   Ú__annotations__Úhasattrr   r   r   r   r   r   Ú	CERT_NONEÚVERIFY_NONEÚCERT_OPTIONALÚVERIFY_PEERÚCERT_REQUIREDÚVERIFY_FAIL_IF_NO_PEER_CERTr(  Úitemsr!  rA   r    r"   r$   r&   r(   r  r  ÚTLSv1ÚTLSv1_1ÚTLSv1_2ÚTLSv1_3r	  r)   r*   rÏ   r5   r:   Ú	getLoggerr	   rm   r   r   r3   r\   rx   r€   r‚   Úmakefiler4   r)  )ÚkÚvr†  s   00@r   Ú<module>r¦     sF  øðô&õP #ã Ý Ý MÝ )ðÝ6ó Û 
Û Ý 'å à	××ÐÝ#ð !Ð"8Ð
9€ð 	‡I�I×Ñ˜GŸK™K×5Ñ5Ø‡I�I×!Ñ! 7§;¡;×#<Ñ#<ð%Ð �>ó ñ
 ˆ3Ð ×!Ò!¡g¨g¯k©k¸>×&JÒ&JØ,3¯K©K×,DÑ,DÐ�c×(Ñ(Ñ)á
ˆ3Ð"×#Ò#©°·±Ð=M×(NÒ(NØ.5¯k©k×.HÑ.HÐ�c×*Ñ*Ñ+á
ˆ3Ð"×#Ò#©°·±Ð=M×(NÒ(NØ.5¯k©k×.HÑ.HÐ�c×*Ñ*Ñ+ð ‡M�M�7—;‘;×*Ñ*Ø×Ñ�w—{‘{×.Ñ.Ø×Ñ�w—{‘{×.Ñ.Ø‡k�k×-Ñ-õ.ðÐ ð /H×.MÑ.MÔ.OÔPÑ.O¡d a˜QšTÑ.OÒPÐ ñ % W§[¡[°-ÀÓCÁgØ‡K�K� óGõ Ð �só ñ ˜GŸK™K¨¸Ó:€ˆcÓ :Ù˜gŸk™k¨?¸AÓ>€�Ó >Ù˜gŸk™k¨?¸AÓ>€�Ó >Ù˜gŸk™k¨?¸AÓ>€�Ó >ð ‡N�N×$Ñ$Ð&;Ø‡N�N×ÑÐ/Ø‡N�N×ÑÐ1°LÕ@Ø‡N�N×ÑÐ1°LÕ@À>ÕQØ‡N�N×ÑØ Õ,¨~Õ=ÀÕNà‡N�N×$Ñ$Ø Õ,¨~Õ=ÀÕNð3Ð  ó ð ‡N�N×$Ñ$ØØ
õ	à
õ	ð õ	ð õ		ð ‡N�N×ÑØ Õ.°Õ?À.ÕPà‡N�N×ÑÐ1°NÕBÀ^ÕSØ‡N�N×ÑÐ1°NÕBØ‡N�N×ÑÐ1Ø‡N�N×$Ñ$Ð&;ð3Ð  ó ð$ Ð à—y‘y×+Ñ+Ð ð ×Ò˜Ó!€õ"õ#õ
õ4&(õR-õ`?÷M;ñ M;ð` $×,Ñ,€Ô ÷a ñ a ÷HøðE ô ô˜y÷ ðüóR Qs   ¤S' È*T Ó'S=Ó<S=