hyb
2025-12-23 7e5db3a16b423ec4a43459805e277979bcac7db5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Ë
ñúhïãóL—ddlZddlZddlZddlmZddlmZdZGd„d«Zy)éNé)ÚProxySchemeUnsupported)Úsixi@cóƗeZdZdZed„«Z    dd„Zd„Zd„Zd„Z    dd„Z
dd    „Z dd
„Z d d „Z d d „Z    d!d „Zd„Zd„Zd"d„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd#d„Zd„Zy)$Ú SSLTransportaL
    The SSLTransport wraps an existing socket and establishes an SSL connection.
 
    Contrary to Python's implementation of SSLSocket, it allows you to chain
    multiple TLS connections together. It's particularly useful if you need to
    implement TLS within TLS.
 
    The class supports most of the socket API operations.
    cóh—t|d«s&tjr td«‚td«‚y)zÒ
        Raises a ProxySchemeUnsupported if the provided ssl_context can't be used
        for TLS in TLS.
 
        The only requirement is that the ssl_context provides the 'wrap_bio'
        methods.
        Úwrap_biozKTLS in TLS requires SSLContext.wrap_bio() which isn't supported on Python 2zXTLS in TLS requires SSLContext.wrap_bio() which isn't available on non-native SSLContextN)ÚhasattrrÚPY2r)Ú ssl_contexts úXH:\Change_password\venv_build\Lib\site-packages\pip/_vendor/urllib3/util/ssltransport.pyÚ$_validate_ssl_context_for_tls_in_tlsz1SSLTransport._validate_ssl_context_for_tls_in_tlss@€ô{ JÔ/܏wŠwÜ,ð,óðô
-ð9óðð0óNcó(—tj«|_tj«|_||_||_|j |j|j|¬«|_|j|jj«y)zV
        Create an SSLTransport around socket using the provided ssl_context.
        )Úserver_hostnameN)
ÚsslÚ    MemoryBIOÚincomingÚoutgoingÚsuppress_ragged_eofsÚsocketr    ÚsslobjÚ _ssl_io_loopÚ do_handshake)Úselfrr rrs     r Ú__init__zSSLTransport.__init__,sm€ô Ÿ ™ ›ˆŒ ÜŸ ™ ›ˆŒ à$8ˆÔ!؈Œ à!×*Ñ*Ø M‰M˜4Ÿ=™=¸/ð+ó
ˆŒ ð
     ×ј$Ÿ+™+×2Ñ2Õ3rcó—|S©N©©rs r Ú    __enter__zSSLTransport.__enter__?s€Øˆ rcó$—|j«yr)Úclose)rÚ_s  r Ú__exit__zSSLTransport.__exit__Bs €Ø 
‰
 rcó6—|jj«Sr)rÚfilenor s r r'zSSLTransport.filenoEó€Ø{‰{×!Ñ!Ó#Ð#rcó&—|j||«Sr)Ú_wrap_ssl_read)rÚlenÚbuffers   r ÚreadzSSLTransport.readHs€Ø×"Ñ" 3¨Ó/Ð/rcóD—|dk7r td«‚|j|«S)Nrz+non-zero flags not allowed in calls to recv)Ú
ValueErrorr*)rr+Úflagss   r ÚrecvzSSLTransport.recvKs&€Ø AŠ:ÜÐJÓKÐ KØ×"Ñ" 3Ó'Ð'rcón—|dk7r td«‚|r|€ t|«}n|€d}|j||«S)Nrz0non-zero flags not allowed in calls to recv_intoé)r/r+r-)rr,Únbytesr0s    r Ú    recv_intozSSLTransport.recv_intoPs@€Ø AŠ:ÜÐOÓPÐ PÙ v~ܘ“[‰FØ ˆ^؈F؏y‰y˜ Ó(Ð(rcó—|dk7r td«‚d}t|«5}|jd«5}t|«}||kr|j    ||d«}||z }||krŒddd«ddd«y#1swYŒxYw#1swYyxYw)Nrz.non-zero flags not allowed in calls to sendallÚB)r/Ú
memoryviewÚcastr+Úsend)rÚdatar0ÚcountÚviewÚ    byte_viewÚamountÚvs        r ÚsendallzSSLTransport.sendallYs‘€Ø AŠ:ÜÐMÓNÐ NØˆÜ ˜Ó ð      t§y¡y°£~ð    ¸Ü˜“^ˆFؘ&’.Ø—I‘I˜i¨¨Ð/Ó0Ø˜‘
ð˜&“.÷    ÷    ÷    ñ    ú÷    ð    ús"žA=°/A1Á A=Á1A:    Á6A=Á=Bcór—|dk7r td«‚|j|jj|«}|S)Nrz+non-zero flags not allowed in calls to send)r/rrÚwrite)rr;r0Úresponses    r r:zSSLTransport.sendcs6€Ø AŠ:ÜÐJÓKÐ KØ×$Ñ$ T§[¡[×%6Ñ%6¸Ó=ˆØˆrcó:—t|«hd£kstd|›d«‚d|v}d|vxs| }|s|sJ‚d|v}d}    |r|    dz }    |r|    dz }    tj||    «}
|jxjdz c_|€d    }|d
krt
j }|d
k(r|s td «‚|
S|r|rt j|
|
|«} n3|rt j|
|«} n|sJ‚t j|
|«} |r| St j| |||«} || _ | S) a
        Python's httpclient uses makefile and buffered io when reading HTTP
        messages and we need to support it.
 
        This is unfortunately a copy and paste of socket.py makefile with small
        changes to point to the socket directly.
        >ÚbÚrÚwz invalid mode z (only r, w, b allowed)rHrGrFÚééÿÿÿÿrz!unbuffered streams must be binary) Úsetr/rÚSocketIOÚ_io_refsÚioÚDEFAULT_BUFFER_SIZEÚBufferedRWPairÚBufferedReaderÚBufferedWriterÚ TextIOWrapperÚmode) rrUÚ    bufferingÚencodingÚerrorsÚnewlineÚwritingÚreadingÚbinaryÚrawmodeÚrawr,Útexts              r ÚmakefilezSSLTransport.makefileis6€ô4‹yšOÒ+ÝÊÐOÓPÐ Pà˜+ˆØ˜+Ò, W ˆÙ™'Ð!Ð!ؘˆØˆÙ Ø s‰NˆGÙ Ø s‰NˆG܏o‰o˜d GÓ,ˆØ  ‰ ×Ò Ñ!ÕØ Р؈IØ qŠ=Ü×.Ñ.ˆIØ ˜Š>ÙÜ Ð!DÓEÐE؈JÙ ‘wÜ×&Ñ& s¨C°Ó;‰FÙ Ü×&Ñ& s¨IÓ6‰FáˆN7Ü×&Ñ& s¨IÓ6ˆF٠؈MÜ×Ñ ¨°&¸'ÓBˆØˆŒ    Øˆ rcóN—|j|jj«yr)rrÚunwrapr s r rbzSSLTransport.unwrap–s€Ø ×ј$Ÿ+™+×,Ñ,Õ-rcó8—|jj«yr)rr#r s r r#zSSLTransport.close™s€Ø  ‰ ×ÑÕrcó8—|jj|«Sr)rÚ getpeercert)rÚ binary_forms  r rezSSLTransport.getpeercertœs€Ø{‰{×&Ñ& {Ó3Ð3rcó6—|jj«Sr)rÚversionr s r rhzSSLTransport.versionŸs€Ø{‰{×"Ñ"Ó$Ð$rcó6—|jj«Sr)rÚcipherr s r rjzSSLTransport.cipher¢r(rcó6—|jj«Sr)rÚselected_alpn_protocolr s r rlz#SSLTransport.selected_alpn_protocol¥s€Ø{‰{×1Ñ1Ó3Ð3rcó6—|jj«Sr)rÚselected_npn_protocolr s r rnz"SSLTransport.selected_npn_protocol¨s€Ø{‰{×0Ñ0Ó2Ð2rcó6—|jj«Sr)rÚshared_ciphersr s r rpzSSLTransport.shared_ciphers«s€Ø{‰{×)Ñ)Ó+Ð+rcó6—|jj«Sr)rÚ compressionr s r rrzSSLTransport.compression®s€Ø{‰{×&Ñ&Ó(Ð(rcó:—|jj|«yr)rÚ
settimeout)rÚvalues  r rtzSSLTransport.settimeout±s€Ø  ‰ ×јuÕ%rcó6—|jj«Sr)rÚ
gettimeoutr s r rwzSSLTransport.gettimeout´s€Ø{‰{×%Ñ%Ó'Ð'rcó8—|jj«yr)rÚ_decref_socketiosr s r ryzSSLTransport._decref_socketios·s€Ø  ‰ ×%Ñ%Õ'rcóæ—    |j|jj||«S#tj$r4}|j
tj k(r|jrYd}~y‚d}~wwxYw©Nr)rrr-rÚSSLErrorÚerrnoÚ SSL_ERROR_EOFr)rr+r,Úes    r r*zSSLTransport._wrap_ssl_readºsZ€ð    Ø×$Ñ$ T§[¡[×%5Ñ%5°s¸FÓCÐ CøÜ|‰|ò    Øw‰wœ#×+Ñ+Ò+°×0IÒ0IÜàûð        ús‚&)©A0¼)A+Á*A+Á+A0có$—d}d}|r¯d}    ||Ž}|j
j «}|jj|«|€d}nj|tjk(rW|jjt«}|r|jj|«n|jj«|rŒ¯|S#tj$rD}|jtjtjfvr|‚|j}Yd}~Œûd}~wwxYw)z>Performs an I/O loop between incoming/outgoing and the socket.TNF)rr|r}ÚSSL_ERROR_WANT_READÚSSL_ERROR_WANT_WRITErr-rrAr1Ú SSL_BLOCKSIZErrCÚ    write_eof)rÚfuncÚargsÚ should_loopÚretr}rÚbufs        r rzSSLTransport._ssl_io_loopÃsæ€àˆ ØˆáØˆEð  Ù˜Dkð—-‘-×$Ñ$Ó&ˆCØ K‰K× Ñ  Ô $àˆ}Ø#‘ Øœ#×1Ñ1Ò1Ø—k‘k×&Ñ&¤}Ó5ÙØ—M‘M×'Ñ'¨Õ,à—M‘M×+Ñ+Ô-ò)ð*ˆ
øô#—<‘<ò  Ø—7‘7¤3×#:Ñ#:¼C×<TÑ<TÐ"UÑUàGØŸ™•ûð      úsŠB8Â8Dà :D
D)NT)r3N)r3rr{)r)rGNNNN)Fr)Ú__name__Ú
__module__Ú __qualname__Ú__doc__Ú staticmethodrrr!r%r'r-r1r5rAr:r`rbr#rerhrjrlrnrprrrtrwryr*rrrr rr s¢„ñðñóðð,OSó4ò&òò$ó0ó(ó
)óóðMQó+òZ.òó4ò%ò$ò4ò3ò,ò)ò&ò(ò(óórr)    rOrrÚ
exceptionsrÚpackagesrrƒrrrr ú<module>r‘s%ðÛ    Û Û
å/Ýà€ ÷RòRr