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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Ë
ê^i"ãóΗddlmZddlZddlZddlZddlZddlmZejrddl    m
Z
ddl m Z m Z ejeefZej$d«Zd    ZGd
„d «Zy) é)Ú annotationsNé)ÚProxySchemeUnsupported)ÚSelfé)Ú_TYPE_PEER_CERT_RETÚ_TYPE_PEER_CERT_RET_DICTÚ _ReturnValuei@có"—eZdZdZed!d„«Z        d"                                    d#d„Zd$d„Zd%d„Zd&d„Z    d'd(d„Z
d)d*d    „Z         d+                            d,d
„Z d-d.d „Z d-d/d „Z    d0dddd œ                                            d1d„Zd2d„Zd2d„Zej&    d3            d4d„«Zej&d5d„«Zd6d7d„Zd8d„Zd9d„Zd8d„Zd:d„Zd8d„Zd;d„Zd<d„Zd2d„Zd0d=d„Zej&d>d„«Zej&d?d„«Zej&                                d@d„«Z        dA                            dBd „Zy)CÚ 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ó2—t|d«s 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_biozXTLS in TLS requires SSLContext.wrap_bio() which isn't available on non-native SSLContextN)Úhasattrr)Ú ssl_contexts õlH:\项目\archive\测试组\脚本\Change_password\venv_build\Lib\site-packages\urllib3/util/ssltransport.pyÚ$_validate_ssl_context_for_tls_in_tlsz1SSLTransport._validate_ssl_context_for_tls_in_tls!s%€ô{ JÔ/Ü(ð5óð ð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)Úselfrrrrs     rÚ__init__zSSLTransport.__init__1sm€ôŸ ™ ›ˆŒ ÜŸ ™ ›ˆŒ à$8ˆÔ!؈Œ à!×*Ñ*Ø M‰M˜4Ÿ=™=¸/ð+ó
ˆŒ ð
     ×ј$Ÿ+™+×2Ñ2Õ3rcó—|S©N©©rs rÚ    __enter__zSSLTransport.__enter__Hs€Øˆ rcó$—|j«yr")Úclose)rÚ_s  rÚ__exit__zSSLTransport.__exit__Ks €Ø 
‰
 rcó6—|jj«Sr")rÚfilenor$s rr+zSSLTransport.filenoNó€Ø{‰{×!Ñ!Ó#Ð#rcó&—|j||«Sr")Ú_wrap_ssl_read)rÚlenÚbuffers   rÚreadzSSLTransport.readQs€Ø×"Ñ" 3¨Ó/Ð/rcóD—|dk7r td«‚|j|«S)Nrz+non-zero flags not allowed in calls to recv)Ú
ValueErrorr.)rÚbuflenÚflagss   rÚrecvzSSLTransport.recvTs&€Ø AŠ:ÜÐJÓKÐ KØ×"Ñ" 6Ó*Ð*rcó`—|dk7r td«‚|€ t|«}|j||«S)Nrz0non-zero flags not allowed in calls to recv_into)r3r/r1)rr0Únbytesr5s    rÚ    recv_intozSSLTransport.recv_intoYs6€ð AŠ:ÜÐOÓPÐ PØ ˆ>ܘ“[ˆ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)r3Ú
memoryviewÚcastr/Úsend)rÚdatar5ÚcountÚviewÚ    byte_viewÚamountÚvs        rÚsendallzSSLTransport.sendalles‘€Ø AŠ:ÜÐMÓNÐ NØˆÜ ˜Ó ð      t§y¡y°£~ð    ¸Ü˜“^ˆFؘ&’.Ø—I‘I˜i¨¨Ð/Ó0Ø˜‘
ð˜&“.÷    ÷    ÷    ñ    ú÷    ð    ús"žA=°/A1Á A=Á1A:    Á6A=Á=Bcón—|dk7r td«‚|j|jj|«S)Nrz+non-zero flags not allowed in calls to send)r3rrÚwrite)rr?r5s   rr>zSSLTransport.sendos2€Ø AŠ:ÜÐJÓKÐ KØ× Ñ  §¡×!2Ñ!2°DÓ9Ð9r)ÚencodingÚerrorsÚnewlinecó:—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)rNrMrLÚréÿÿÿÿrz!unbuffered streams must be binary) Úsetr3rÚSocketIOÚ_io_refsÚioÚDEFAULT_BUFFER_SIZEÚBufferedRWPairÚBufferedReaderÚBufferedWriterÚ TextIOWrapperÚmode) rrZÚ    bufferingrHrIrJÚwritingÚreadingÚbinaryÚrawmodeÚrawr0Útexts              rÚmakefilezSSLTransport.makefilets=€ô 4‹yšOÒ+ܘ}¨T¨HÐ4KÐLÓMÐ Mà˜+ˆØ˜+Ò, 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 rrdzSSLTransport.unwrap¨s€Ø ×ј$Ÿ+™+×,Ñ,Õ-rcó8—|jj«yr")rr'r$s rr'zSSLTransport.close«s€Ø  ‰ ×ÑÕrcó—yr"r#©rÚ binary_forms  rÚ getpeercertzSSLTransport.getpeercert®s€ð+.rcó—yr"r#rgs  rrizSSLTransport.getpeercert³s€ØNQrcó8—|jj|«Sr")rrirgs  rrizSSLTransport.getpeercert¶s€Ø{‰{×&Ñ& {Ó3Ð3rcó6—|jj«Sr")rÚversionr$s rrmzSSLTransport.version¹s€Ø{‰{×"Ñ"Ó$Ð$rcó6—|jj«Sr")rÚcipherr$s rrozSSLTransport.cipher¼r,rcó6—|jj«Sr")rÚselected_alpn_protocolr$s rrqz#SSLTransport.selected_alpn_protocol¿s€Ø{‰{×1Ñ1Ó3Ð3rcó6—|jj«Sr")rÚshared_ciphersr$s rrszSSLTransport.shared_ciphersÂs€Ø{‰{×)Ñ)Ó+Ð+rcó6—|jj«Sr")rÚ compressionr$s rruzSSLTransport.compressionÅs€Ø{‰{×&Ñ&Ó(Ð(rcó:—|jj|«yr")rÚ
settimeout)rÚvalues  rrwzSSLTransport.settimeoutÈs€Ø  ‰ ×јuÕ%rcó6—|jj«Sr")rÚ
gettimeoutr$s rrzzSSLTransport.gettimeoutËs€Ø{‰{×%Ñ%Ó'Ð'rcó8—|jj«yr")rÚ_decref_socketiosr$s rr|zSSLTransport._decref_socketiosÎs€Ø  ‰ ×%Ñ%Õ'rcóæ—    |j|jj||«S#tj$r4}|j
tj k(r|jrYd}~y‚d}~wwxYw©Nr)rrr1rÚSSLErrorÚerrnoÚ SSL_ERROR_EOFr)rr/r0Úes    rr.zSSLTransport._wrap_ssl_readÑsZ€ð    Ø×$Ñ$ T§[¡[×%5Ñ%5°s¸FÓCÐ CøÜ|‰|ò    Øw‰wœ#×+Ñ+Ò+°×0IÒ0IÜàûð        ús‚&)©A0¼)A+Á*A+Á+A0có—yr"r#)rÚfuncs  rrzSSLTransport._ssl_io_loopÛs€ØEHrcó—yr"r#)rr„Úarg1s   rrzSSLTransport._ssl_io_loopßs€ØUXrcó—yr"r#)rr„r†Úarg2s    rrzSSLTransport._ssl_io_loopãs€ð rcóŒ—d}d}|rÊd}    |€
|€|«}n|€    ||«}n    |||«}|j
j «}|jj|«|€d}nj|tjk(rW|jjt«}|r|jj|«n|jj«|rŒÊtjt |«S#tj$rE}|jtjtjfvr|‚|j}Yd}~Œd}~wwxYw)z>Performs an I/O loop between incoming/outgoing and the socket.TNF)rrr€ÚSSL_ERROR_WANT_READÚSSL_ERROR_WANT_WRITErr1rrEr6Ú SSL_BLOCKSIZErrGÚ    write_eofÚtypingr=r
)    rr„r†rˆÚ should_loopÚretr€r‚Úbufs             rrzSSLTransport._ssl_io_loopës€ðˆ ØˆáØˆEð  Ø< D LÙ›&‘Cؐ\Ù˜t›*‘Cá˜t TÓ*Cð—-‘-×$Ñ$Ó&ˆCØ K‰K× Ñ  Ô $àˆ}Ø#‘ Øœ#×1Ñ1Ò1Ø—k‘k×&Ñ&¤}Ó5ÙØ—M‘M×'Ñ'¨Õ,à—M‘M×+Ñ+Ô-ò3ô4{‰{œ<¨Ó-Ð-øô#—<‘<ò  Ø—7‘7¤3×#:Ñ#:¼C×<TÑ<TÐ"UÑUàGØŸ™–ûð      úsŠ C+Ã+EÃ>:D>Ä>E)rússl.SSLContextÚreturnÚNone)NT)
rz socket.socketrr’rú
str | NonerÚboolr“r”)r“r)r(z
typing.Anyr“r”)r“Úint)éN)r/r—r0ztyping.Any | Noner“ú int | bytes)r˜r)r4r—r5r—r“r™r~)r0Ú _WriteBufferr8ú
int | Noner5r—r“zNone | int | bytes)r)r?Úbytesr5r—r“r”)r?rœr5r—r“r—r") rZÚstrr[r›rHr•rIr•rJr•r“z1typing.BinaryIO | typing.TextIO | socket.SocketIO)r“r”).)rhztyping.Literal[False]r“z_TYPE_PEER_CERT_RET_DICT | None)rhztyping.Literal[True]r“z bytes | None)F)rhr–r“r)r“r•)r“ztuple[str, str, int] | None)r“z!list[tuple[str, str, int]] | None)rxú float | Noner“r”)r“rž)r/r—r0úbytearray | Noner“r™)r„ztyping.Callable[[], None]r“r”)r„ztyping.Callable[[bytes], int]r†rœr“r—)r„z/typing.Callable[[int, bytearray | None], bytes]r†r—rˆrŸr“rœ)NN)r„z"typing.Callable[..., _ReturnValue]r†zNone | bytes | intrˆrŸr“r
)Ú__name__Ú
__module__Ú __qualname__Ú__doc__Ú staticmethodrr r%r)r+r1r6r9rEr>rbrdr'rŽÚoverloadrirmrorqrsrurwrzr|r.rr#rrr r s„ñðò óð ð&'+Ø%)ð 4àð4ð$ð4ð$ð    4ð
#ð 4ð
ó 4ó.óó$ô0ô+ð"Øð    
)àð
)ðð
)ðð    
)ð
 
)ôô:ð!%ð2ð
 $Ø!Ø"ñ2àð2ðð2ð
ð 2ð ð 2ðð2ð
;ó2óh.óð ‡__à36ð.Ø0ð.à    (ò.óð.ð ‡__ÚQóØQô4ó%ó$ó4ó,ó)ó&ó(ó(ôð ‡__ÚHóØHð ‡__ÚXóØXð ‡__ðà=ððððð    ð
 
ò óðð$(Ø!%ð    $.à0ð$.ð!ð$.ðð    $.ð
 
ô $.rr )Ú
__future__rrTrrrŽÚ
exceptionsrÚ TYPE_CHECKINGÚtyping_extensionsrÚssl_rr    ÚUnionÚ    bytearrayr<ršÚTypeVarr
rŒr r#rrú<module>r®s\ðÝ"ã    Û Û
Û å/à    ×ÒÝ&çCð|‰|˜I zÐ1Ñ2€ ؈v~‰~˜nÓ-€ à€ ÷y.òy.r